【问题标题】:Insert User Logout information After Session Timeout?在会话超时后插入用户注销信息?
【发布时间】:2016-08-23 11:33:01
【问题描述】:

我想在会话超时后让用户注销并且在注销时我正在插入该特定用户的值在他的标志中进行更改,比如如果他的标志是 1,他已登录,如果他的标志为 0,他已注销所以我想在他注销时将标志值从 1 更改为 0。

我的注销操作:

public ActionResult Logout(short? UserId12)
    {
        FormsAuthentication.SignOut();
        //Session["UserName"] = null;
        //Session["BranchCode"] = null;
        //Session["GroupID"] = null;

        USER_LOGIN obj = new USER_LOGIN();

        obj = db.USER_LOGIN.Find(UserId12);

        obj.LOGOUTFLAG = 0;
        obj.LOGOUT_DATETIME = System.DateTime.Now;
        db.SaveChanges();

        Session.RemoveAll();
        return RedirectToAction("Login", "Account");

    }

我试图通过 jquery 发送用户 ID 来解决这个问题,但问题是用户 ID 正在会话中它会按时过期

<script>
    var url= '@Url.Action("Logout", "Account", new { UserId12 = Session["UserId1"] })';
    var sessTm = @Session.Timeout
    sessTm = sessTm * 60;
    sessTm = sessTm - 10;
    function mTmout() {
        sessTm -= 1;
        if (sessTm == 0) {
            window.location = url;
        } else {
            setTimeout(mTmout, 1000);
        }
    };

    $(document).ready(function () {
        $(".tmout").html(sessTm);
        setTimeout(mTmout, 1000);
    });

【问题讨论】:

    标签: javascript c# jquery asp.net-mvc


    【解决方案1】:

    尝试相反,即登录应该填充您的会话,当会话到期时,用户将自动显示为已注销。

    通过在您的应用或控制器上设置一个过滤器来检查登录的会话变量并在它不存在时重定向来实现这一点。

    例如,在“App_Start”文件中使用FilterConfig.cs 以实现应用范围广泛的覆盖:

    public class FilterConfig
    {
       public static void RegisterGlobalFilters(GlobalFilterCollection filters)
       {
          filters.add(new LoginFilter());
       }
    }
    

    登录过滤器:

    public class LoginFilter : ActionFilterAttribute
    {
       public override void OnActionExecuting(ActionExecutingContext filterContext)
       {
          if(HttpContext.Current.Session["IsLoggedIn"]==false) //or null
          {
             //redirect to login page
          }
       }
    }
    

    您需要为您的登录控制器实现此功能,以免出现无限重定向循环:Skip global filter

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      相关资源
      最近更新 更多