2016-07-17 2 views
0

데이터베이스에서 내 자신의 사용자 지정 역할 테이블을 만들었으며 사용자 지정 권한 부여 특성을 함께 만들고 싶습니다. 여기데이터베이스에서 MVC 사용자 지정 권한 부여 특성

는 내가 지금까지 가지고있는,하지만 난 진행하는 방법을 정말 잘 모르겠어요 :

private List<RoleModel> Roles; 
    private IRoleRepository repo; 
    private ICustomerRepository cust; 


    public bool CheckRoles(string UserId) 
    { 
     try 
     { 
      Roles = repo.GetAll().ToList(); 
      CustomerModel Customer = cust.Get(UserId); 
      int CustomerRole = Customer.RoleId; 
      RoleModel role = Roles.First(x => x.id == CustomerRole); 


     } 
     catch(Exception e) 
     { 
      return false; 
     } 
    } 

    public override void OnAuthorization(AuthorizationContext filterContext) 
    { 
     base.OnAuthorization(filterContext); 
     string UserId = filterContext.HttpContext.User.Identity.GetUserId(); 



    } 

사람이 나를 내가 대단히 감사하겠습니다이 완료 도움이 할 수 있습니다.

감사합니다.

+1

, 당신은 정교한 수 있습니까? –

답변

0

사용자 정의 AuthorizeAttribute를 만드는 것이 좋습니다. 표준 AuthorizeAttribute를 사용하는 것이 좋습니다.

일반적으로 고유 한 역할 테이블을 갖는 경우입니다. 주체의 ID 역할을 설정하고 AuthorizeAttribute의 Roles 속성을 사용하는 방법을 재정의하는 것이 좋습니다. 사용자가 로깅 할 때 클레임으로 역할을 한 번 설정합니다. 각 요청마다 사용자 지정 권한 부여 특성의 데이터베이스에서 역할을 검색하는 것보다 낫습니다. 와 컨트롤러/액션을 보호 한 후 청구 CalimTypes.Role 설정하고 : 당신이 붙어있는 파트

[Authorize(Roles = "admin")] 
+0

내 역할 테이블을 만든 이유는 각 역할에 가격 열과 기본 값이 있으므로 역할을 구입해야하기 때문입니다. 그러나 내 역할 테이블에 ASPRoleId의 외래 키를 부여하고 그런 식으로 연결하는 것이 좋은 습관이라고 생각합니까? – DevShadow

관련 문제