ASP.NET IAuthorizationFilter OnAuthorization
嗨,我正在尝试实现自定义授权filter
//The Authourization attribute on a controller public class CustomAdminAuthorizationFilter : IAuthorizationFilter { private readonly IAuthentication _authentication; public SageAdminAuthorizationFilter(IAuthentication authentication) { _authentication = authentication; } public void OnAuthorization(AuthorizationContext filterContext) { bool result = _authentication.Authorize(filterContext.HttpContext); } }
正如你在OnAuthorization上看到的那样,我得到的结果是假的。 我需要设置什么才能返回我来自哪里?
编辑:
它似乎仍然让我直接进入登录页面
我注射了IAuthetication
this.BindFilter(FilterScope.Controller, 0); Bind().To();
然后我在控制器中装饰我的动作。
[Authorize] public ActionResult Index() { ViewBag.Title = "Welcome"; ViewBag.Message = "Welcome to ASP.NET MVC!"; return View(); }
在我的web.config我使用
这应该改变吗?
任何帮助将不胜感激。
将其更改为Attribute
,而不是简单的IAuthorizationFilter
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)] public class SageAdminAuthorizeAttribute : AuthorizeAttribute, IAuthorizationFilter { readonly IAuthentication _authentication; public SageAdminAuthorizeAttribute(IAuthentication authentication) { _authentication = authentication; } public override void OnAuthorization(AuthorizationContext filterContext) { if (!_authentication.Authorize(filterContext.HttpContext)) filterContext.Result = new HttpUnauthorizedResult(); } }
而现在,而不是使用[Authorize]
使用您的新[SageAdminAuthorize]
属性
[SageAdminAuthorize] public ActionResult Index() { ViewBag.Title = "Welcome"; ViewBag.Message = "Welcome to ASP.NET MVC!"; return View(); }