2014-09-09 2 views
5

MVC4에서 나는 주어진 사용자가 어떤 역할에 있는지 확인하기 위해 Roles.IsUserInRole을 사용했습니다. 그러나 MVC5에서는 더 이상 할 수 없습니다. ...MVC 5 - 역할 - IsUserInRole 및 역할에 사용자 추가

처음에는 web.config에서 RoleManager를 사용하도록 설정했으나 Microsoft에서 Web.Security에서 Microsoft.AspNet.Identity로 옮겼습니다. .

제 질문은 Microsoft.AspNet.Identity와 같습니다. Roles.IsUserInRole과 비슷한 작업을 수행하려면 어떻게해야합니까? 그리고/또는 역할과 사용자 사이에 관계를 생성하십시오.

덧붙여서, 나는 여전히 새로운 인증 방법 (ClaimsIdentity?)을 이해하려고 노력하고 있습니다.

답변

10

Identity 2.0의 기본 사항은 http://typecastexception.com/post/2014/04/20/ASPNET-MVC-and-Identity-20-Understanding-the-Basics.aspx입니다.

당신이 시작하는 완전한 데모 프로젝트도있다 :

var userManager = HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>(); 
const string name = "YourUsername" 
const string roleName = "Admin"; 

var user = userManager.FindByName(name); 
//check for user roles 
var rolesForUser = userManager.GetRoles(user.Id); 
//if user is not in role, add him to it 
if (!rolesForUser.Contains(role.Name)) 
{ 
    userManager.AddToRole(user.Id, role.Name); 
} 
+0

좋습니다. 덕분에 ... 고마워요. 그건 그렇고, authorize 속성이 작동하지 않습니다 ... 어떤 이데아? 지금 기사를 읽을 수는 없지만 최대한 빨리 읽습니다. –

+1

이 문제에 대한 적절한 설명과 함께 다른 질문을하는 것이 좋습니다. 왜냐하면 여기에서 내가 할 일은 모두 추측하기 때문입니다. – Marco

+0

감사합니다. 게시물을 만들었습니다. http://stackoverflow.com/questions/25743113/mvc-5-roles-authorizeattribute-outdated –

6

: 당신이 당신의 신원 재단의 기초로이 걸릴 경우 https://github.com/TypecastException/AspNet-Identity-2-With-Integer-Keys

는이 같은 것을하게 될 겁니다이 위의 게시물은 정말 도움이되었습니다. (감사합니다. 내 명성이 나를 허용하는 경우 Serv에 투표하십시오.) 그것은 내가 달성하려고 노력했던 것에 맞도록 약간의 사소한 변화를 가지고 있었던 문제를 해결하는 데 도움이되었습니다. 내 특정 문제는 현재 사용자가 지정된 역할 그룹에 속한 경우 MVC보기를 체크 인하려는 것이 었습니다. 또한 Roles.IsUserInRole이 더 이상 작동하지 않는 것으로 나타났습니다.

bool isAdmin = HttpContext.Current.User.IsInRole("Admin"); 
: 당신이보기에이 일을하지만, 이전 MVC 버전에서 제공하는 간단한 멤버 자격 공급자 대신 ASP.NET 정체성 2.0을 사용하는 경우

, 다음은 1 줄 솔루션으로 도움이 될 수 있습니다

그런 다음 선택적으로이 같은 뭔가 (내가 그것을 사용하고 무엇 인) 메뉴 항목을 표시하는 HTML과 결합 할 수있다 :이 허용

@if (isAdmin) 
{ 
    <li>@Html.ActionLink("Users", "List", "Account")</li> 
} 

나 사용자 관리 하이퍼 링크에 대한 액세스를 방지하기 위해 어디에 사용자가 'Admin'역할의 구성원이 아닙니다.

+0

니스 (1up),이 역시 저를 도왔습니다! –

관련 문제