2016-09-23 4 views
4

私は外部サービスからユーザーの資格情報を検証する必要があるため、私はVirtualUser認証を使用しています。Sitecore仮想ユーザーログインエクスペリエンスプロファイル

  • BuildVirtualUserで設定するロールを確認し、ユーザープロファイルを保存してからその名前でログインします。

私は毎日、同じ資格情報でSitecoreが経験プロファイルに新しいユーザーを作成してログインするという問題に直面しています。
仮想ユーザログインを使用して、Sitecoreがユーザの古いエクスペリエンスプロファイルを取得することを保証するために、コードで変更する必要があるのは何ですか?

同じ一般的なパスワードでsitecoreでユーザーを作成しようと考えていました。代わりに、仮想ユーザーを使用し、直接sitecoreで認証します。あれは正しいですか?

は、ここに私のコードです:

Sitecore.Security.Accounts.User user = Sitecore.Security.Authentication.AuthenticationManager.BuildVirtualUser(sitecoreUser, true); 
string roleName = @"newRole\User"; 
Sitecore.Security.Accounts.Role demoRole = Sitecore.Security.Accounts.Role.FromName(roleName); 

if (Sitecore.Security.Accounts.Role.Exists(roleName) && !demoRole.IsMember(user, true, false)) 
{ 
    user.Roles.Add(Sitecore.Security.Accounts.Role.FromName(roleName)); 
} 

user.Profile.Name = name; 
user.Profile.Email = email; 
user.Profile.FullName = fullname; 

user.Profile.Save(); 
Sitecore.Security.Authentication.AuthenticationManager.Login(user.Name); 

Tracker.Initialize(); 

答えて

2

コードは正常に見えるが、あなたは一つの重要な事柄欠場:ユーザー/連絡先を識別するために。

あなたは、コードの次の行を追加する必要があります。

Tracker.Current.Session.Identify(email); 

連絡先を特定する方法についての詳細を調べるには、次のリンクをご確認ください:

https://doc.sitecore.net/sitecore_experience_platform/setting_up__maintaining/xdb/contacts/identifying_contacts

+0

おかげで、私はまた別の質問をしました。仮想ユーザーが既に存在するかどうかを知ることは可能でしょうか?既にルールが実装されているかどうかを知る。またはこれを行うには、sitecoreでユーザーを作成する方が良いですか? 私は、彼らのシステムを通して認証する必要があり、初めてかどうかを知る必要があるでしょう。 –

+0

いくつかのテストの後、エラーが発生しました。 Tracker.Initialize()の後にあなたが言ったコードを挿入しました。エラーが発生しました。 "this.Interactionはnullであってはいけません" –