首页 > javaweb如何判断请求的用户是否登录

javaweb如何判断请求的用户是否登录

用户每次向服务器发送请求时,服务器应该怎么判断,发起该请求的用户是否登录呢?先说一下我的想法:用户是处于登录状态还是处于离线状态应该由服务端决定。所以在用户第一次输入用户名密码发送登录请求后,服务器用户名和密码验证是否匹配,若匹配,则把用户名密码拼接起来进行md5运算,得到一个ticket字符串,并将ticket和当前时间戳timeStamp以及相关的用户信息(比如user表的id值)保存在数据库的登录状态表loginStatus中,然后将该ticket返回给用户。之后用户的每次请求都带着这个ticket,服务端接收到请求后查找loginStatus表,如果查找到了ticket并且当前时间戳timeStampNow减数据库中保存的那个时间戳timeStamp大于登录时限(比如1小时),就表明登录成功,然后执行相应操作,否则返回并告诉用户请登录。

上边是我粗浅的理解,我想请教一下这种办法是否合理


1.有不一部分不合理:【并将ticket和当前时间戳timeStamp以及相关的用户信息(比如user表的id值)保存在数据库的登录状态表loginStatus中】
这个最好是保存到memcached缓存中,别持久化放数据库了,另外你这种方式对于一些手机单页应用来说也是很有效的。
正好今天我也设计了这么一个,发下图给你:

2.如果你是传统的PCWeb页面的话 ,前端都是JSP开发,那么就不用这么麻烦了:你只要在登陆时将用户的信息噻到session中,然后后端定义一个过滤器,每次请求都检查session是否有用户信息,进行过滤即可,不过这个没有上面说的那个好,但简单。

3.最后再附上一个解决方案:JWT,JSON WEB TOKEN,看完这两篇文章你可以选择用第一种还是JWT,传送门:
http://blog.leapoahead.com/2015/09/07/user-authentication-with-jwt/

http://blog.leapoahead.com/2015/09/06/understanding-jwt/

【热门文章】
【热门文章】