【发布时间】:2015-06-09 06:33:18
【问题描述】:
我正在构建一个基于ASP.NET MVC 5 的网站,该网站使用基于OWIN 的身份验证。我在管理员面板的应用程序中创建了一个新的Area。我想要一个与普通用户不同的登录页面。
例如,当我转到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);
}
}
【问题讨论】:
-
为什么您认为遍历自定义 Authorize 属性不是一个好的解决方案?
-
@tire0011,我碰巧看到在使用自定义属性时抛出了一个内部异常
Headers were already sent!。 -
您可以发布自定义属性中的代码吗?
标签: asp.net-mvc authentication owin area