自动登录、记住我(保存登陆状态)实现

自动登录、记住我(保存登陆状态)实现:
保存在客户端
不能用session,可以用cookies保存

实现方式:
第一种方法:
可以把SessionId(GUID)放到cookies中,但

这样为了让用户下次访问我们网站时,知道这

个sessionId对应的是哪一个用户,我们还要在

数据库中建张表。
表字段:
主键,UserId  SessionId  时间

缺点:不能在两台机器上同时保存


第二种方法:
把UserId放cookies中  密码(加密)
相对于第一种方法优点:多台机器可以保存
缺点:不安全,密码放到了客户端。

 

第二种方法实现代码:

页面加载读取Cookie判断,正确写入Session,转向

 protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Request.Cookies["cUser"] != null && Request.Cookies["cPwd"] != null)
                {
                    string cUser = Request.Cookies["cUser"].Value;
                    string cPwd = Request.Cookies["cPwd"].Value;

                    string sqlPwd = "";
                    BookShop.Model.User oneUser = bll.Exists(cUser);
                    if (oneUser != null)
                    {
                        #region MyRegion
                        //说明存在cUser
                        if (cPwd.Length > 2)//防止用户修改Cookie中的密码报错
                        {
                            string salt = cPwd.Substring(0, 2);
                            sqlPwd = oneUser.LoginPwd;

                            sqlPwd = Encrypt(sqlPwd, salt);
                            if (cPwd == sqlPwd)
                            {
                                //保存Session状态
                                Session["user"] = oneUser;
                                //转向
                                #region MyRegion
                                if (Request.QueryString["returnUrl"] == null)
                  

你可能感兴趣的:(技术总结)