역할

2013-02-22 5 views
0

나는 GetRolesForUser에서 나는 예외를 가지고역할

public ActionResult Index() 
{ 
    if(User!=null) 
    { 
     if(0==(Roles.GetRolesForUser(username).ToList().Contains("administrator"))) 
     { 
      //do something 
     } 
    } 
    return View(); 
} 

색인 컨트롤러에서 다음 코드를 실행하고 싶습니다 온라인/

예외 날

+0

당신의 web.config 파일의'roleManager' 섹션을 게시하시기 바랍니다. – danludwig

답변

1

Controller.User 속성이 null 없을 것 파일 _appStart.cshtml에 WebSecurity's InitializeRoles 전화 요청)에 로그인. 사용자가 로그인하지 않은 경우 User은 여전히 ​​IPrincipal 인스턴스를 참조합니다. 그러나 User.Identity.Name은 빈 문자열과 같습니다. 또한 User.IsAuthenticatedfalse과 같습니다.

이 시도 :

public ActionResult Index() 
{ 
    if (User.IsInRole("administrator")) 
    { 
     // do something 
    } 
    return View(); 
} 
0

당신은 이미 당신의 Web.config에서으로 roleManager을 활성화하지 않은 경우. https://stackoverflow.com/a/12980969/1502563

코드 조각 아래에 링크 된 답변에서 :

이 게시물을 참조하십시오

<roleManager enabled="true" defaultProvider="SimpleRoleProvider"> 
    <providers> 
    <clear/> 
    <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/> 
    </providers> 
</roleManager> 
<membership defaultProvider="SimpleMembershipProvider"> 
    <providers> 
    <clear/> 
    <add name="SimpleMembershipProvider" 
     type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData"/> 
    </providers> 
</membership> 

아, 그리고 물론이 - 당신이 너무 역할 관리자를 작성해야합니다.

은 어떤면에서 이러한 링크가 처음부터 그것을 할 참조 :

http://odetocode.com/blogs/scott/archive/2012/09/05/seeding-membership-amp-roles-in-asp-net-mvc-4.aspx

http://blog.longle.net/2012/09/25/seeding-users-and-roles-with-mvc4-simplemembershipprovider-simpleroleprovider-ef5-codefirst-and-custom-user-properties/

관련 문제