Asp.net mvc 3 如何在MVC3中授权不同的登录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

大家好,我有两个登录名,但如何使用authorize分配这些登录URL

这是我的网络配置:

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