自动登录、记住我(保存登陆状态)实现
来源:互联网 发布:外国人吃西洋参吗 知乎 编辑:程序博客网 时间:2024/04/28 08:14
自动登录、记住我(保存登陆状态)实现:
保存在客户端
不能用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)