采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
其实这个问题很多同学不会是有原因的,因为大多数的同学从 0 到 1 的完成一个项目的机会不多,基本上都是项目已经开始了,你加进去的。所以,用户系统开始就已经存在了。
那么,你有没有思考过,如果让你来重写用户登录和登出的功能,你会怎么实现呢?这样做的理由又是什么呢?
登录:验证帐号密码,判断登录失败次数,记录日志,颁发token或记录session, 登出:验证当前用户,删除token或session;
不对的话问一下琨琨
非常感谢!
勤一你很棒:
其实要搞清楚 Web 工程的登录和登出,我们需要先搞清楚几个概念:HTTP 的无状态、Cookie 和 Session。先来依次看看它们的概念吧。
HTTP 协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。
Cookie 是什么呢?
由于 HTTP 是一种无状态的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie 的工作原理。
Cookie 实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用 response 向客户端浏览器颁发一个 Cookie。客户端会把 Cookie 保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该 Cookie 一同提交给服务器。服务器检查该 Cookie,以此来辨认用户状态。服务器还可以根据需要修改 Cookie 的内容。
那么,Session 又是什么呢?
Session 是指用户登录网站后的一系列动作,比如浏览商品添加到购物车并购买。会话(Session)跟踪是Web 程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是 Session 与 Cookie。Session 通过在服务器端记录信息确定用户身份,Cookie 通过在客户端记录信息确定用户身份。
所以,你知道了,Cookie 是保存在浏览器上的(也是后端服务设置的),而 Session 是记录在服务端的(可以放在数据库中,也可以放在 Redis 中)。至于它们记录了哪些信息,其实就很简单了:当然是用户的 id 或者是唯一能够识别用户身份的信息。
登录:应该使用过滤器去实现,客户端会把 Cookie 带过来,你根据 Cookie 去找到对应的 Session,判断下 Session 是否过期,如果没有过期,你也就知道了当前登录的用户是谁了。后面的逻辑随你怎么去玩了
登出:一样是根据 Cookie 找到 Session,然后删除或者设置为过期就可以了。是不是非常简单的思想!
我是勤一,致力于将这门课程的问答区打造为 Java 知识体系知识库,Java 知识体系 BBS!共同建造、维护这门课程,我需要每一个你!
登录:首先从前端获取到密码和账号,再判断合法性,然后再判断正确性。 登出:销毁session
登录后可查看更多问答,登录/注册
掌握业务开发中各种类型的坑,,Java web开发领域通用
1.5k 4
1.0k 3
837 12
857 2
1.6k 3