セッションが終了すると、ユーザーをログインページにリダイレクトします。私はこれを行うための多くの方法を見つけましたが、ASP.Net MVC5とOWINのベストな(またはデフォルトの)方法は何ですか? おそらくそれは箱の外で動作しますか?しかし、どのように?セッションの有効期限が切れた場合にログインページにリダイレクトするためのベストプラクティス
レイザー:
- は有効なログイン
- 後にセッション変数を設定_Layout.cshtmlでこれを追加:
@if (Session["IsLogin"] == null)
{
Session.Abandon();
Response.Redirect("~/LoginControllerName/LoginActionName");
}
のGlobal.asax:
- ことがありますこれらの2つの方法を使用することは可能ですが、私は方法がわかりません。
protected void Session_Start(object sender, EventArgs e)
{
// Code that runs when a new session is started
}
protected void Session_End(object sender, EventArgs e)
{
// Code that runs when a session is expired
}
私の現在のソリューション:
- すべてのコントローラにリダイレクトので、私はOnAuthorizationAttributeを使用
BaseController
- から継承し、それは非公開ページである場合にのみ実行されなければなりません。
public abstract class BaseController : Controller
{
protected override void OnAuthorization(AuthorizationContext filterContext)
{
if (this.Session["RedirectAfterLogin"] == null)
{
var isAnonymousAllowed = filterContext.ActionDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true) || filterContext.ActionDescriptor.ControllerDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true);
if (!isAnonymousAllowed)
{
this.Session["RedirectAfterLogin"] = this.Request.Url?.ToString();
filterContext.Result = this.RedirectToAction("LoginActionName", "LoginControllerName");
}
}
base.OnAuthorization(filterContext);
}
}
- リダイレクトは、ユーザーサインアウトした後:
if (this.AuthenticationManager == null)
{
this.SetAuthenticationManager(this.HttpContext?.GetOwinContext()?.Authentication);
}
this.AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie);
- 有効なログイン設定セッション変数の後に:
this.Session["RedirectAfterLogin"] = this.Request.Url?.ToString();
これは私の設定と似ています。さらに、 '' SlidingExpiration = true''と '' 'ExpireTimeSpan = TimeSpan.FromMinutes(30)' 'を設定しました。しかし私のweb.configでは、セッションのタイムアウトが '' '' '' –
cSteusloff