2012-09-28 1 views
1

현재 사용자는 관리자, 수위, 교사 등이 될 수 있습니다. 현재 기본 공급자를 사용하고 있습니다.ASP.NET 역할 추가 계층

곧 여러 개의 클럽이 있어야합니다. 모든 역할은 모든 클럽에서 동일하게 적용됩니다. 사용자는 여러 클럽에 속할 수 있으며 각기 다른 클럽에서 서로 다른 역할을 할 수도 있고 그렇지 않을 수도 있습니다.

역할과 클럽은 데이터베이스에 저장해야합니다.

쉬운 방법이 있습니다. 이상적으로 이런 식으로하고 싶습니다.

[Authorize Roles = RoleName.Foo + Clubname.Bar] 

답변

2

당신은 그것의 동작을 사용자 정의 Role Provider 클래스를 사용할 수 있습니다 사용하여 회원 시스템을 사용자 정의/확장 볼 수 있었다 그것은 당신의 방법을 구현 한이 여기에 표시

ASP.NET MVC - Alternative to Role Provider?는 적어도 얻을처럼 시작하고 신선한 있습니다 아이디어.

희망이 도움이됩니다.

+0

+1 : 이것은 시스템을 복잡하게하지 않고 이것을 수행하는 가장 확장 가능한 방법 인 것 같습니다. –

+0

그러나 그는 링크 된 예에서 역할 제공자를 사용하지 않습니다. 내가 뭔가 잘못 됐어? – Philippe

+0

정답을 보내 주셔서 감사합니다. 나는 (응답을 다시 읽으려는) 당신이 * Role Provider 또는 그 대안을 사용하고 있는지를 의미합니다. Joel이 언급 한 것처럼 가장 확장 성이 뛰어난 (간단하고, 쉽고, 읽을 수 있고, 유지할 수있는) 솔루션입니다. 다시 한번 감사드립니다. –

0

"Administrator.Club1"및 "Janitor.Club2"와 같은 역할 이름을 만들 수 있습니다.

비교적 적은 수의 클럽을 가정합니다.

+0

동일한 테이블에이 모든 것을 저장해야한다는 의미일까요? 나는 그렇게하지 않는 것을 좋아한다. – Philippe

1

기본 권한 부여 특성을 사용하면 역할은 단지 문자열 이름입니다. 어떤 사람들은 이것을 서브 클래스 화하여 accept enum Roles입니다.

아마도 모든 클럽을 역할로 만들고 모든 역할을 역할로 만들 수 있으며 클럽 이름 역할과 적절한 역할 수준을 모두 갖추어야 할 수도 있습니다. 그러나 그것은 역할의 의미가 손상된 것처럼 보입니다. 사용자 정의 권한 부여 프로세스없이이 작업을 수행 할 수 있을지는 의문입니다.

Authorize attribute에서 상속받은 custom authorize attribute을 만들고 추가 정보를 얻기 위해이 정보를 확장 할 수 있습니다. 당신은 Simple Membership provider