セッションの有効期限が切れているかどうかを確認するために、各アクションでSessionExpireFilterを使用しています。セッションの有効期限が切れている場合、それはsessionTimeoutPageにユーザーをリダイレクトするフィルタが常にSessionTimeOutページにリダイレクトするASP.net MVC
public class SessionExpireFilterAttribute : ActionFilterAttribute
{
/// <summary>
/// Called when [action executing].
/// </summary>
/// <param name="filterContext">The filter context.</param>
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpContext ctx = HttpContext.Current;
// check if session is supported
if (ctx.Session != null)
{
// check if a new session id was generated
if (ctx.Session.IsNewSession)
{
// If it says it is a new session, but an existing cookie exists, then it must
// have timed out
string sessionCookie = ctx.Request.Headers["Cookie"];
if ((null != sessionCookie) && (sessionCookie.IndexOf("ASP.NET_SessionId") >= 0))
{
if (ctx.Request.IsAuthenticated)
{
FormsAuthentication.SignOut();
}
//HttpCookie mycookie = new HttpCookie("ASP.NET_SessionId");
//mycookie.Expires = DateTime.MinValue;
//ctx.Response.Cookies.Add(mycookie);
//ctx.Session.Clear();
RouteValueDictionary redirectTargetDictionary = new RouteValueDictionary();
redirectTargetDictionary.Add("action", "SessionTimeOut");
redirectTargetDictionary.Add("controller", "Membership");
filterContext.Result = new RedirectToRouteResult(redirectTargetDictionary);
}
}
}
base.OnActionExecuting(filterContext);
}
}
like-見えすなわちmembershipControllerとSESSIONTIMEOUTビュー
の問題は、私はまた、そのフィルタを持っている会員コントローラログインアクションメソッドを持っています。セッションの有効期限をチェックし、常にASP.NET_SessionIdクッキーを見つけ、sessionTimeoutページにリダイレクトします(ログインページへのリンクがあります)。
誰かが助けてくれるといいですね。
私はもう一度ログインをやっているので、いいと思います。私が持っている問題は、ASP.Net_sessionクッキーは常に新しいセッションにもあります。 – Amit
これは、ランタイムの仕組み(そしてログインの実行はセッションとは関係ありません)を信じています。チェック。 – tpeczek
申し訳ありませんが、イベントを配線することで動作していませんでした – Amit