2011-03-07 7 views
6

MVC 3 응용 프로그램을 만들고 인증 및 권한 부여 관리에 적합한 솔루션을 찾아야합니다. 회원 자격을 사용했고,이 경우에는 사용하고 싶지 않습니다. 저는 제 자신의 디자인과 테이블을 사용하는 것을 선호합니다. 그러나 기본 인터페이스를 사용하여 사용자 정의 논리를 구현하는 것이 좋습니다. 사용자는 하나 개 또는 여러 역할의 일부가 될 수MVC 인증/권한 부여 솔루션에 대한 도움말

  • : 여기

    내 요구 사항입니다.

  • 역할은 여러 "사용 권한"(다 대다)에 매핑 될 수 있습니다. 권한은 "다른 사용자의 게시물을 편집 할 수 있습니다"와 같은 것입니다.

  • 각 컨트롤러 작업은 하나 이상의 역할에 대한 액세스를 허용 할 수 있습니다 (공개 페이지의 경우 권한이 필요하지 않을 수도 있음).

  • 뷰의 다양한 요소를 볼 수있는/업데이트 할 수있는 "기능 수준"컨트롤이 필요합니다. 이러한 역할을 수행하는 데 사용 권한을 사용할 수 있습니다.

  • 사이드 노트로, 회원들이 페이스 북 및/또는 트위터 계정을 사용하여 가입하도록 허용 할 것입니다. 그러나 이것은 맞춤식 회원 구현과는 독립적으로 수행 할 수 있습니다 (가입시 맞춤 사용자를 만든 다음 FB/Twitter 계정에 연결).

나는 누군가가 전에 이런 식으로 뭔가를했다고 확신합니다. 그러나이 주제에 대해 본 적이있는 십여 개 이상의 블로그 및 SO 게시물을 기반으로 한 솔루션은 실제로는 맞지 않았습니다. 그러나 나는 그 조각들을 함께 맞추지 못하는 좋은 기회가 있으며, 적절한 무엇인가가 바로 나를 쳐다보고있다.

예를 들어 "클레임 기반"인증과 "역할 기반"인증에 대해 읽었지만 전화를 걸기에 충분한 차이점이나 ASP.NET 멤버 자격이 필요한지 여부를 이해하지 못했습니다. 또한 IPrincipal 및 IIdentity를 구현하고 컨트롤러 액세스를 사용하기 위해 액션 필터를 사용하여 맞춤 멤버십을 구축하는 것에 대해 읽었지 만이 작업을 수행하는 데 필요한 포괄적 인 가이드를 찾지 못하고 있으며 액션 필터는 여전히 녹색입니다.

등록, 인증, 암호 분실 등을 위해 .NET의 내장 컨트롤을 사용해야하는지에 대해서도 확신하지 못합니다. 본능은 내가 보통 이러한 건물을 만드는 것을 좋아하지 않기 때문에, 또한 사용자 정의 설치에서 작동하는지 확신 할 수 없습니다. 하지만 내가 틀렸다면 알려주세요.

미리 감사드립니다.

+0

내 접근 방식이 마음에들 수도 있습니다. http://stackoverflow.com/questions/3964989/how-to-pass-current-user-information-to-all-layers-in-ddd/3969014 # 3969014 –

답변

4

ASP.NET 인증/권한 부여 프레임 워크에는 두 가지 다른 부분이 있습니다. 첫 번째는 회원 및 역할 제공 업체가있는 프런트 엔드이며 SqlMembershipProviderSqlRoleProvider을 사용하는 백엔드가 있습니다.

내 개인적인 경험에 따르면, 내 자신의 사용자 정의 버전의 MembershipProvider 및 RoleProvider를 작성하는 것이 가장 쉬운 것으로 밝혀졌습니다. 나는 그것이 당신의 모든 요구 사항을 만족시킬 것이라고 생각합니다.

업데이트 : 제라드가 나에게 물었다 : "그것은는 MembershipProvider 및 RoleProvider을 구현하는 것 같다 내가/사용을 필요로하지 않습니다 그 오버 헤드 (보풀)이 많이 추가이 갈 방법은 아직인가 나는 일을 무엇 혜택 않습니다.? 이?"

인증/권한 부여 프레임 워크를 사용하면 많은 것들을 활용할 수 있습니다. 예를 들어 [Authorize(Roles = "DefaultUser")]과 같은 역할을 기반으로 컨트롤러에 인증 방법을 지정할 수 있습니다. 같이 필요한 경우 뷰에서 직접 코드를 확인 : 또한

<% if (Request.IsAuthenticated) { %> 
<p>Only authenticated users see this.</p> 
<% } %> 

, 인증/권한 부여 역할/사용자 쿠키를 설정하고이를 암호화하는 더러운 일을 담당 당신이 자신의 롤 경우,이 뭔가입니다. 당신은 스스로해야만합니다.

또한 Jared는 "사용자 ca n은 하나 또는 여러 역할의 일부가 될 수 있습니다. "및"역할은 여러 "사용 권한"(다 대다)에 매핑 될 수 있습니다. 권한은 "다른 사용자의 게시물을 편집 할 수 있습니다"와 같은 것입니다.

같은 역할과 권한을 고려합니다. 그래서 한 명의 사용자가 여러 역할과 권한을 가질 수 있습니다. "CanEditPosts" "Admin"등.

+0

답변 해 주셔서 감사합니다. 나는이게 나에게 이득이되는 것을 이해하려고 노력하고있다? 이미 사용자를 만들고 인증하는 데 사용하는 서비스 방법이 있습니다. [이 기사] (http://mattwrock.com/post/2009/10/14/Implementing-custom-Membership-Provider-and-Role-Provider-for-Authinticating-ASPNET-MVC-Applications.aspx)를 보면, 그것은 MembershipProvider를 구현하는 것처럼 보이고 RoleProvider는 결코 필요로하지 않을 많은 오버 헤드 (그리고 보풀)를 추가합니다. 아직도이 방법이 있습니까? 이 작업을 수행하면 어떤 이점이 있습니까? 다시 한번 감사드립니다. –

+0

@Jerad - 위의 사항을 해결하기 위해 몇 가지 의견을 추가했습니다 ... – Keltex

+0

감사합니다. 역할 = 권한에 대한 귀하의 마지막 의견에 관해서는 역할에 대한보다 세부적인 제어 권한이 필요합니다. 예를 들어 일부 권한 (CanEditPosts)은 여러 역할 (Admin, Moderator)에 속할 수 있습니다. 이 권한을 역할로 그룹화하여 사용자가 개별 권한 집합이 아닌 권한 그룹 (역할)에 할당되도록하려고합니다. 그래서 나는 그것을지지 할 필요가있을 것이다. 기본 제공자를 좀 더 확장해야 할 것 같은데. –

관련 문제