3
나는 내 자신의 Authorize
속성을 구현했으며, [Authorize]
을 사용할 때 권한을 확인하기 위해 쿼리한다는 것을 알았습니다.특성 승인 권한을 얻으시겠습니까?
컨트롤러에서 코드를 다시 작성하고 다시 쿼리 할 필요없이 해당 권한을 가져 와서 Authorize
특성을 적용하는 현재 컨트롤러에서 사용할 수 있습니까?
나는 내 자신의 Authorize
속성을 구현했으며, [Authorize]
을 사용할 때 권한을 확인하기 위해 쿼리한다는 것을 알았습니다.특성 승인 권한을 얻으시겠습니까?
컨트롤러에서 코드를 다시 작성하고 다시 쿼리 할 필요없이 해당 권한을 가져 와서 Authorize
특성을 적용하는 현재 컨트롤러에서 사용할 수 있습니까?
예, 가능합니다. 당신은 ActionFilterAttribute로 권한 부여 속성을 구현하는 경우는 다음과 같이 정보를 저장을 ViewData 수집을 사용할 수 있습니다
public class RequireRegistrationActionFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpRequestBase request = filterContext.HttpContext.Request;
HttpResponseBase response = filterContext.HttpContext.Response;
if (request != null &&
response != null)
{
bool isAuthenticated = request.IsAuthenticated;
filterContext.Controller.ViewData["IsAuthenticated"] = isAuthenticated;
if (!isAuthenticated)
{
string url = String.Format(
"/?ReturnUrl={0}",
HttpUtility.UrlEncode(request.Url.ToString()));
response.Redirect(url);
}
}
}
}
를 anoteated 컨트롤러의 acrion에서 당신이 필드에 액세스 할 수 있습니다
bool isAuthenticated = (bool)(ViewData["IsAuthenticated"] ?? false);