MVC3에서 간단한 작업을 수행하려고합니다.폼 인증을 사용하는 MVC3의 간단한 인증
타사 SSO로 사용자를 인증하는 데 폼 인증을 사용하는 응용 프로그램이 있습니다. 로그인 성공시, SSO는 내 응용 프로그램의 특정 컨트롤러 작업으로 다시 게시됩니다. 그런 다음 FormsAuthentication.SetAuthCookie(user,false);
으로 전화하십시오.
일부 권한 부여를 구현하려고합니다. 간단히 말해, 사용자는 여러 가지 역할 (예 : Admin
및 Developer
. 일부 컨트롤러 작업은 특정 역할에서만 사용할 수 있어야합니다. 사용자가 속한 역할에 대한 세부 정보는 간단한 외부 JSON 응답을 나타내는 다른 외부 API를 호출하여 얻을 수 있습니다. 그러나
string[] rolelist = GetRoleListForUserFromAPI(User.Identity.Name);
HttpContext.User = new GenericPrincipal(User.Identity, rolelist);
, 내가 직접 SetAuthCookie
를 호출 한 후이를 호출 할 수 없습니다 HttpContext.User
아무것도하지 않기 때문에, : 내가하고 FormsAuthentication 쿠키를 설정 한 후
은 이론적으로,이 같은 일을하는 것만 큼 간단해야한다 이 시점에서 의미가 있습니다.
모든 요청에서이 값을 설정할 수는 있지만 앱에 대한 요청은 왕복 API 호출을 의미합니다.
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (<some way of checking if roles have already been set for this user, or role cache has timed out>)
{
string[] rolelist = GetRoleListForUserFromAPI(filterContext.HttpContext.User.Identity.Name);
filterContext.HttpContext.User = new GenericPrincipal(filterContext.HttpContext.User.Identity,rolelist);
}
}
내가 다음을 위해 컨트롤러 액션의 앞에 [MyCustomAuthorization(Roles="Admin")]
을 사용할 수
내가 지금까지 본 중에 가장 유망한 방법은 사용자 정의 인증 속성을 생성하고이 같은 뭔가를 OnAuthorization
을 무시하는 것입니다 마술이 일어난다.
그러나 현재 HttpContext.User
개체의 역할이 설정되었는지 여부 또는 특정 시간 전에 설정되어 있고 다른 API 여행이 필요한지 여부를 감지하는 방법을 알지 못합니다.
이 용도로 가장 적합한 방법은 무엇입니까?
좋은 질문 .... –