请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

SpringMVC 中用户登录和登出的逻辑和实现应该是怎样的呢?

其实这个问题很多同学不会是有原因的,因为大多数的同学从 0 到 1 的完成一个项目的机会不多,基本上都是项目已经开始了,你加进去的。所以,用户系统开始就已经存在了。

那么,你有没有思考过,如果让你来重写用户登录和登出的功能,你会怎么实现呢?这样做的理由又是什么呢?

正在回答

3回答

登录:验证帐号密码,判断登录失败次数,记录日志,颁发token或记录session,
登出:验证当前用户,删除token或session;

不对的话问一下琨琨

1 回复 有任何疑惑可以回复我~
  • 提问者 张勤一 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-09-14 15:14:29
提问者 张勤一 2020-09-14 15:14:20

勤一你很棒:

    其实要搞清楚 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!共同建造、维护这门课程,我需要每一个你!

1 回复 有任何疑惑可以回复我~
嘘哈 2020-09-01 11:13:19

登录:首先从前端获取到密码和账号,再判断合法性,然后再判断正确性。
登出:销毁session

1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信