我在构建基于OWIN
的身份验证的基于ASP.NET MVC 5
的网站。我在管理员面板的应用程序中创建了一个新的Area
。我想有一个不同于普通用户的登录页面。ASP.NET MVC 5 OWIN区域身份验证
例如,当我去http://site/admin/home/index
它应该检查授权并重定向到http://site/admin/account/login
,而不是去站点用户登录页面。
我已经尝试执行自定义Authorize
属性。不过,我不知何故觉得这不是正确的做法。
有人可以建议一个更好或更正确的解决方案吗?
编辑:自定义属性实现
public class AuthorizeAreaAttribute : AuthorizeAttribute
{
public string Url { get; set; }
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
{
filterContext.HttpContext.Response.Redirect(Url);
filterContext.HttpContext.Response.End();
}
base.OnAuthorization(filterContext);
}
}
为什么你认为这不是一个很好的解决方案来通过自定义的授权属性? – tire0011 2015-04-04 09:08:49
@ tire0011,当我使用自定义属性时,碰巧看到一个内部异常被抛出'Headers has already sent!'。 – 2015-04-04 09:18:56
你可以发布自定义属性的代码吗? – tire0011 2015-04-04 09:33:58