0

Sitecore 6.4 で認証済みログイン エクストラネット ユーザーのロールを取得するにはどうすればよいですか? 役割を確認してアクセスを制限しようとしています。

Sitecore.Context.User.Roles は、extranet\WebsiteUser ではなく、default\Anonynous で戻ってきます。

更新:ログイン直後にロールを確認すると、すべて正常に表示されます。ただし、httphandler 内からロールをチェックすると、Sitecore.Context.User.Roles が失われ、default\Anonynous にデフォルト設定されます。

エクストラネット ユーザー コードを作成します。

using (new SecurityStateSwitcher(SecurityState.Disabled))
        {
            var domainUsername = Context.Domain.GetFullName(user.Email);
            Sitecore.Security.Accounts.User sitecoreUser = Sitecore.Security.Accounts.User.Create(domainUsername, user.Password);

            Database dbCore = Factory.GetDatabase("core");
            Item profileItem = dbCore.GetItem(CustomUserProfilePath);

            List<Role> roles = Sitecore.Context.Domain.GetRoles().Where(role => role.Name == "extranet\WebsiteUser").ToList();
            if (roles.Any())
            {
                sitecoreUser.Roles.Add(roles.First());
            }

            sitecoreUser.Profile.ProfileItemId = profileItem.ID.ToString();
            sitecoreUser.Profile.FullName = string.Format("{0} {1}", user.FirstName, user.LastName);
            sitecoreUser.Profile.Email = user.Email;
            sitecoreUser.Profile.Comment = "Created by the register system";
            sitecoreUser.Profile.Save();
        }
4

1 に答える 1

0

web.config を介してハンドラーをルーティングする代わりに、IIS7 の URL 書き換えを使用して解決策を見つけました。これにより、Sitecore.Context が保持されるため、ログインしているユーザーのロールを確認できます。

于 2012-03-05T10:44:23.143 に答える