私はASP.NET MVCプロジェクトを持っています。ウェブサイトのさまざまな領域に対して異なるLoginUrlを使用したいと思います。サイトの領域に応じて、さまざまな種類の資格情報が入力されます。ASP.NET MVCとフォーム認証で異なるURLのLoginUrlが異なる
http://host.com/widget/home
は、http://host.com/widget/logon
にリダイレクトする必要があります。
http://host.com/admin/home
は、http://host.com/admin/logon
にリダイレクトする必要があります。
これまでのところ、私が出ている最善の解決策は、web.configファイル内のフォーム認証loginUrl =「〜/アカウント/ログオン」を持つことである:
:アカウントのコントローラで<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880"/>
</authentication>
public ActionResult LogOn()
{
//redirect depending on the returnUrl?
string returnUrl = ControllerContext.Controller.ValueProvider["ReturnUrl"].AttemptedValue;
if (returnUrl.StartsWith("/widget"))
{
return Redirect(string.Format("/widget/Logon?ReturnUrl={0}", returnUrl));
}
if (returnUrl.StartsWith("/admin"))
{
return Redirect(string.Format("/admin/Logon?ReturnUrl={0}", returnUrl));
}
return View();
}
これを行うより良い方法はありますか?
ところで、単にメソッドの文字列パラメータとしてreturnUrlを指定することができます:LogOn(string returnUrl) –