내 MVC4 앱에서 세부적인 권한을 처리하기 위해 만든 사용자 지정 AuthorizeAttribute 클래스가 있습니다.다중 역할 멤버십을 허용하는 사용자 지정 MVC AuthorizeAttribute
[isAuthorized(enRole = oRoles.StudentLookup)]
[isAuthorized(enRole = oRoles.StaffLookup)]
[isAuthorized(enRole = oRoles.StudentChangeRequest)]
[isAuthorized(enRole = oRoles.StaffChangeRequest)]
:
이
public enum oRoles
{
StudentSelfPassword = 1,
StaffSelfPassword = 2,
StudentLookup = 3,
StudentChangeRequest = 4,
StudentAdmin = 5,
StaffLookup = 6,
StaffChangeRequest = 7,
StaffAdmin = 8,
ChangeQueueApproval = 9
}
내 컨트롤러에서 나는하여 AuthorizeAttribute 전화 : 나는 코드가 도움이 허용하는 선언 다음 열거있어
[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
public class isAuthorized : AuthorizeAttribute
{
public oRoles enRole;
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var authorized = base.AuthorizeCore(httpContext);
string test = enRole.ToString();
if (!authorized)
{
// The user is not authenticated
return false;
}
var user = httpContext.User;
bool bFlag = AuthCheck.CheckUser(httpContext, enRole);
if (bFlag) // I know this is a lot of code; it's for debugging purposes
return true;
return false;
}
}
:
이
클래스입니다디버거를 통해 실행하면 첫 번째 isAuthorized가 실행되고 true를 반환하고 두 번째 isAuthorized로 돌아가 거짓을 반환하면 즉시 인증을 요청합니다. 첫 번째 조건이 참 이었기 때문에 허용 할 것으로 기대했습니다. 그러나, 내 가정이 옳지 않은 것 같습니다.
원래 도메인의 그룹 인 Roles = "change, admin"이 있었지만 작동했지만 그룹은 정적이 아닌 할당에서 동적이어야했습니다. 나는 거기에 여러 항목을 밀어 수있었습니다. 그것은 문자열로 전송 되었기 때문입니까?
기본적으로 isAuthorized (...)를 수행하는 방법이 있습니까? isAuthorized (...) || isAuthorized (...) 하나의 조건이 참이면 ok로 확인됩니다.
나는이 사이트를 사랑한다! 정말 고맙습니다; 그게 도움이 됐어! –
그리고 보너스! 감사! –