私はクラスCheckSessionTimeOutAttribute
を作成しました。セッションタイムアウト時に自動的にログアウトすると、ここで私はreturn urlのメソッドを作成しました。URLとSessionTimeoutがASP .Net MVC 5を使用して正しく動作していませんか?
セッションタイムアウト時に自動的にログアウトすると、URLが返されます。正しい資格情報を書き込むと、Login Controllerの戻り値が返されます。それは2つの戻りURLには行っていません。
また、セッションのタイムアウトとログインページが表示され、ブラウザの戻るボタンを押すと前のページに戻るときに問題が発生する可能性があります。私がログアウトしてもうまく動かない。
http://localhost:1563/?returnUrl=%2FElectricity
私はそれは行くhttp://localhost:1583/Electricity
のようなURLを返しに行くのではありませんログインしたときhttp://localhost:1563/user
ログインコントローラー:
public ActionResult Index()
{
ViewBag.Title = "Example.com | Login";
return View();
}
[HttpPost]
public ActionResult Index(FormCollection fc)
{
string username = fc["username"].ToString();
string password = fc["password"].ToString();
var query = (from u in db.tbl_user
where u.USERNAME == username && u.PASSWORD == password
select u).FirstOrDefault();
if (query != null){
Session["username"] = username;
Session["login"] = true;
return RedirectToAction("Index","User");
}
return View("Index");
}
クラス名CheckSessionTimeOutAttribute
:
[AttributeUsage(AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
public class CheckSessionTimeOutAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (HttpContext.Current.Session["login"] == null)
{
FormsAuthentication.SignOut();
filterContext.Result =
new RedirectToRouteResult(new RouteValueDictionary
{
{ "action", "Index" },
{ "controller", "Login" },
{ "returnUrl", filterContext.HttpContext.Request.RawUrl}
});
return;
}
}
}
のweb.config:
<sessionState mode="InProc" timeout="1" cookieless="false"></sessionState>
<authentication mode="Forms">
<forms loginUrl="~/Login" timeout="1">
</forms>
</authentication>
ログインコントローラを表示するインデックス取得アクション –
@EhsanSajjad、ログインコントローラのインデックス取得機能を追加しました。 –
ご使用のモデルにFormCollectionを使用しないでください。また、TempDataを使用することは最適ではありません。私はまもなく答えを投稿します! –