2

エクストラネット ユーザーがサイト内の制限されたページにアクセスするためのフロント エンド ログイン ページを備えたサイトコア セットアップがあります。

エクストラネット ユーザーは現在、持続性フラグが等しい状態でログインしています

global::Sitecore.Security.Domains.Domain domain = global::Sitecore.Context.Domain;
var isLogginedIn = AuthenticationManager.Login(domain + @"\" + email, password, true);

これは正常に機能し、コンテキストが正しく設定されています。

以下は、同じリクエスト内でログインした直後のウィンドウからの出力です。

global::Sitecore.Context.User.Domain
extranet

global::Sitecore.Context.User.Roles.Count()
1

global::Sitecore.Context.User.IsAuthenticated()
true

ユーザーがログインすると、ユーザーはアクセスしたいページにリダイレクトされます。

以下は、後続のリクエストの即時ウィンドウからの出力です

global::Sitecore.Context.User.Domain
null

global::Sitecore.Context.User.Roles.Count()
0

global::Sitecore.Context.User.IsAuthenticated()
true

後続のリクエストで一部のコンテキスト項目が失われる可能性がある理由を知っている人はいますか?

前もって感謝します

4

3 に答える 3

0

Sitecore の独自のログイン ページを作成しようとしているようです。この場合、メソッドを呼び出す代わりに、loggingingパイプラインを開始してみてください。AuthenticationManager.Login

var loggingInArgs = new LoggingInArgs
{
    Username = userName,
    Password = password,
    StartUrl = startUrl
};

Pipeline.Start("loggingin", loggingInArgs);
bool isLogginedIn = loggingInArgs.Success;
于 2013-07-31T12:35:33.817 に答える
0

Domain が null で Roles が空であるという正確な問題がありました。原因は、ユーザーのログインに asp:Login コントロールを使用したことです。これを標準の Text、Password、および Button コントロールに置き換えると、問題はなくなりました。

于 2014-11-15T20:43:06.453 に答える
0

これは、適切な解決策ではなく、この問題を隠すためのパッチのようなものですが、他の誰かがこれについてさらに考えを深めるきっかけになった場合に備えて、誰かを投稿します.

カスタム パイプライン中に次のコードを呼び出しています

if (user.Domain == null && user.IsAuthenticated)
{
   var domainUser = string.Format(@"extranet\{0}", user.LocalName);
   var membershipUser = Membership.GetUser(domainUser);

   if (membershipUser != null)
   {
      AuthenticationManager.Login(domainUser, membershipUser.GetPassword(), true);
   }
}

これが呼び出された後、ユーザーにはドメインとロールが正しく設定されています。奇妙なことに、これ以降の他のすべてのリクエストには、ユーザーが正しく設定されています。

于 2013-08-01T14:18:25.220 に答える