フォーム認証で 2 つのログオン URL を持つことはできません。この機能を実現する必要がある場合は、カスタム[Authorize]
属性を記述してから、HandleUnauthorizedRequestメソッドをオーバーライドして、対応するログオン 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();
}
}