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);