网站自动登录功能的设计

网站自动登录功能的设计

admin 2025-02-22 足球资讯 7937 次浏览 0个评论

我相信有很多IT者都会遇到公司要求网站能够完成自动登录,那什么是自动登录呢?

所谓自动登陆就是当用户第一次访问网站时,输入用户名和密码,接下来勾选了自动登陆复选框,进入首页后,点击退出登陆,关闭网页,再次打开同样的网站,则无需再次输入账号密码,直接进入首页,这种交互方式就是“自动登录”,这是极为出色的用户体验,但是明确怎么完成这些功能呢,下面给大家介绍一下我的理解和完成方式。

大家用过京东和淘宝的想必都知道,登陆京东后,发现账户信息已经显示在首页,可以直接进行购物和付款,这种体验就是我们要追求的方式。

网站自动登录功能的设计

为何浏览器打开,网站就会自动登陆呢,那说明打开网站的时候,浏览器向服务器端发送了一个凭证(Token也可叫钥匙),告诉服务器,我是你的真实用户,可放心开门,既然浏览器端需要提供凭证,那我们肯定会想到Cookie,只有Cookie才能在客户端永久保存,客户端从Cookie中提取信息后,服务器端识别后才能知道真伪,那说明服务器端是需要核验的。

到此,我们的思路已经出来了,要完成自动登陆:

1.用户登陆网站时,选择“N周内免登录”。

2.用户登陆成功后需要在浏览器端保存Cookie信息,在此之时服务器端信息库中也需要记录同样的信息。

3.当用户访问时,读取客户端中cookie信息,到服务器端信息库进行核验,信息一致时直接获取用户信息保存session,跳转到首页。

以上是我帮助大家检视的思路,那下面我们就会明确去讲这些方案。 既然是cookie完成,那么cookie一定可以被伪造的,所以上述的方案有以下安全隐患:

1.修改用户名,这样就可以随便用其他人的账号登录了;

2.修改cookie的有效期,这样当别人拿到你的电脑的时候,即使已经过了cookie的有效期,仍然可以登陆。

既然我们都知道Cookie是有安全隐患的,但是我们不用又不行,由此可见,我们能做的就是降低风险:

1.通过将cookie中保存的信息进行加密处理方式,用户登陆成功以后,将时间戳和随机数合并通过MD5加密处理方式形成Token。

String token = Utils.MD5(System.currentTimeMillis()+Math.Rand(0,9999999));

当然,也可以通过用户名+系统时间生产Token或者将sessionId加密生产Token也可以。

2.将用户ID(uid或者userName)和有效时间(1个月)以及Token保存在cookie中,在此之时记录到信息库表中(Remember_Key)。

3.用户访问网站时,后台读取Cookie,获取uid和Token,去信息库对比,如果都存在,且在有效期内,则通过uid直接获取用户信息并保存session,直接跳转到首页。

前端可对此进行处理方式,获取到后台返回的信息后,展示用户名以及头像信息等。

4.后台需要做过滤器,过滤网站的所有页面,每当打开页面时,第一步判断是否登陆,如果已经登陆则跳过,如果未登陆,需要先读取Cookie,判断是否匹配,如果匹配则跳过登陆,直接获取用户信息,否则跳转到登陆页面。

后台表设计:

id

user_id

token

expires_date

create_time

update_time

41000000

NGyuswVwxnXxz4BI1F1UyNoWWrxcuRiadPYpJcVTMN9DmDYrNvCEDdwMOS6o522JY8FPtQsLg

1456381021993

转载请注明来自滨海娱乐投注,本文标题:《网站自动登录功能的设计 》

每一天,每一秒,你所做的决定都会改变你的人生!