私はmvcフレームワークでフォーム認証を行おうとしていますが、ログインしてURLをコピーし、ページからログアウトして他のブラウザーまたはタブで開くと、ログインページに移動する必要がありますが、最初に認証する必要があるページにリダイレクトされます。認証なしのログインページ内。
これが私のWeb設定の設定です:
<!--Using forms authentication-->
<location path="Content">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<!-- allow any user to see the login controller -->
<location path="~/Developer/Index">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<authentication mode="Forms">
<forms name=".ASPXFORMSAUTH" loginUrl="~/Developer/Index" timeout="2880" />
</authentication>
And in my controller login Action method i used
[HttpPost]
public ActionResult LoginAPI(LoginAPIFormModel loginapp)
{
if (!ModelState.IsValidField("username") || !ModelState.IsValidField("pwd"))
{
if (!ModelState.IsValidField("username"))
{
ModelState.AddModelError("username", "Invalid Email");
}
else
{
ModelState.AddModelError("Incomplete", "Please fill out each field");
}
return View(loginapp);
}
try
{
var context = new ndCorp_SiteEntities();
var Hashpwd = CreateHash(loginapp.pwd);
var res = context.DevUserInfoes.Where(i => i.UserName == loginapp.username && i.USerPwd == Hashpwd).FirstOrDefault() ;
TempData["mode"] = "LoginAPI";
FormsAuthentication.SetAuthCookie(loginapp.username, false);
return RedirectToAction("SuccessView");
}
catch (Exception ex)
{
Console.Write(ex);
return View(loginapp);
}
}
ログイン後に実際にユーザーページにリダイレクトするJavaScriptコードは次のとおりです。
if (@Html.Raw(Json.Encode(TempData["mode"])) == "LoginAPI")
{
parent.closeFancybox();
//setTimeout(parent.closeFancybox(), 1000)
//window.top.closeFancybox();
var url = '@Html.Raw(Url.Action("ManageApps", "Developer", new { username =@Html.Raw(Json.Encode(TempData["uname"]))} ))';
url = url.replace(/%22/g,'');
parent.location.href = url;
}