您的位置:首页 > 其它

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

2014-03-31 23:28 495 查看
自动登录、记住我(保存登陆状态)实现:

保存在客户端

不能用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)

                  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  session cookies cookie