2012-03-04 4 views
0

sitecore 6.4에서 인증 된 로그인 익스트라 넷 사용자의 역할을 얻으려면 어떻게해야합니까? 액세스를 제한하는 역할을 확인하려고합니다.HttpHandler의 사용자 역할에 Sitecore 익스트라 넷 확인 로그인

Sitecore.Context.User.Roles가 기본 \ Anonynous가 아니라 엑스트라 넷 \ WebsiteUser로 돌아옵니다.

업데이트 : 로그인 한 직후 역할을 확인할 때 모두 정상적으로 나타납니다. 그러나 그것은 내가 Sitecore.Context.User.Roles가 손실되고 default \ Anonynous로 httphandler 내에서 역할을 확인할 때입니다.

엑스트라 넷 사용자 코드 만들기 :

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(); 
     } 

답변

0

내가 지금 IIS7 URL을 사용하는 대신 Web.config를 통해 핸들러를 라우팅의 재 작성을 통해 해결책을 발견합니다. 이렇게하면 로그인 한 사용자 역할을 확인할 수 있도록 Sitecore.Context가 유지됩니다.