0

我有一张User桌子。我正在使用Forms身份验证并具有以下登录代码:

 public JsonResult LogOn(FormCollection form)
 {
        var agent = SiteUserRepository.CheckAgent(form["Email"], form["Password"]);
        if (agent == null)
            return Json(new
            {
                IsSuccess = false,
                Message = "Wrong email or password"
            });
        SiteUserRepository.UpdateLastLogon(agent.Email);

        FormsAuthentication.SetAuthCookie(agent.Email, true);
        ApplicationSession.CurrentUser = agent;

        return Json(new
            {
                IsSuccess = true
            });

 }

ApplicationSession是我的对象包装器Session

public static class ApplicationSession
{
    private const string _currentUser = "CurrentUser";
    public static SiteUser CurrentUser
    {
        get
        {
            var user = HttpContext.Current.Session[_currentUser];
            if (user != null)
                return (SiteUser)user;
            return null;
        }
        set
        {
            HttpContext.Current.Session[_currentUser] = value;
        }
    }

}

会话超时等于 1440(24 小时)。我需要这个值。例如用户在网站上登录。然后我从数据库中删除这个用户。并且用户将通过身份验证(当然,如果他们不单击注销)。解决这个问题的最佳方法是什么?

4

2 回答 2

1

您想使用 cookie。您的代码需要检查 cookie,如果它不存在,或者时间已过期,则创建一个新的。

我想这会给你一个很好的例子:

基于登录信息的 C# Cookie

http://www.beansoftware.com/ASP.NET-Tutorials/Cookies-ASP.NET.aspx

一天到期的记住我复选框类型的实现可以这样做:

if (chBox.Checked)

      {
          HttpCookie myCookie = new HttpCookie("Cookie_Remember"); //new cookie object

          Response.Cookies.Remove("Cookie_Remember"); //This will remove previous cookie
          Response.Cookies.Add(Cookie_Remember); //This will create new cookie

          Cookie_Remember.Values.Add("UserInfo", txt_username.Text); //Add User Name 

        // You can add multiple values

          DateTime CookieExpir= DateTime.Now.AddDays(5); //Cookie life

          Response.Cookies["Cookie_Remember"].Expires = CookieExpir; //Maximum day of cookie's life       
      }
于 2012-12-25T03:53:47.450 回答
0

一个解决方案是只允许通过您的应用程序从您的存储库/数据库中删除用户。

删除用户时,强制将其注销:

//Delete the user
SiteUserRepository.DeleteUser(agent);

//Log them out
FormsAuthentication.Signout();
于 2012-12-25T03:49:40.910 回答