Asp.net mvc 3 如何在MVC3中授权不同的登录Url?
大家好,我有两个登录名,但如何使用authorize分配这些登录URL 这是我的网络配置:Asp.net mvc 3 如何在MVC3中授权不同的登录Url?,asp.net-mvc-3,Asp.net Mvc 3,大家好,我有两个登录名,但如何使用authorize分配这些登录URL 这是我的网络配置: <location path="Home"> <system.web> <authorization> <deny users="?"/> </authorization> </system.web> </location> <authentic
<location path="Home">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
<authentication mode="Forms">
<forms loginUrl="~/Home/Login" timeout="2880" />
</authentication>
那么如何创建第二个登录URL呢?在表单身份验证中不能有两个登录URL。如果需要实现此功能,您可以编写自定义的
[Authorize]
属性,然后覆盖可以重定向到相应登录url的方法
例如:
public class MyAuthorizeAttribute : AuthorizeAttribute
{
private readonly string _controller;
private readonly string _action;
public MyAuthorizeAttribute(): this("account", "logon")
{
}
public MyAuthorizeAttribute(string controller, string action)
{
_controller = controller;
_action = action;
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
var values = new RouteValueDictionary(new
{
controller = _controller,
action = _action,
returnurl = filterContext.HttpContext.Request.Url.PathAndQuery
});
filterContext.Result = new RedirectToRouteResult(values);
}
}
然后:
public class SomeController
{
[MyAuthorize]
public ActionResult Foo()
{
return View();
}
[MyAuthorize("account", "someotherlogonaction")]
public ActionResult Bar()
{
return View();
}
}
表单身份验证中不能有2个登录URL。如果需要实现此功能,您可以编写自定义的
[Authorize]
属性,然后覆盖可以重定向到相应登录url的方法
例如:
public class MyAuthorizeAttribute : AuthorizeAttribute
{
private readonly string _controller;
private readonly string _action;
public MyAuthorizeAttribute(): this("account", "logon")
{
}
public MyAuthorizeAttribute(string controller, string action)
{
_controller = controller;
_action = action;
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
var values = new RouteValueDictionary(new
{
controller = _controller,
action = _action,
returnurl = filterContext.HttpContext.Request.Url.PathAndQuery
});
filterContext.Result = new RedirectToRouteResult(values);
}
}
然后:
public class SomeController
{
[MyAuthorize]
public ActionResult Foo()
{
return View();
}
[MyAuthorize("account", "someotherlogonaction")]
public ActionResult Bar()
{
return View();
}
}