请稍等 ...
×

采纳答案成功!

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

对应shiro认证的一些疑问

老师,
图片描述

我想问一下,现在的意思是每次请求都要去login一下么,然后通过doGetAuthenticationInfo去请求一下数据库中的user是否正确,是这个意思么。

正在回答 回答被采纳积分+3

1回答

神思者 2021-03-06 21:33:30

后端Java项目每次接收到的请求都要shiro做认证和授权,认证就是检验token,授权后面的章节有,这里不展开说明。你说的每次认证都走数据库是不对的。

0 回复 有任何疑惑可以回复我~
  • 提问者 讨厌往昔3945544 #1
    但是我每回请求都会通过onAccessDenied,这个不是认证未通过授权的方法么,没有地方记录这个登录信息,验证完token就直接executeLogin,我怎么感觉每次请求都是登录一次的过程,请老师指点一下
    回复 有任何疑惑可以回复我~ 2021-03-07 13:48:05
  • 神思者 回复 提问者 讨厌往昔3945544 #2
    这个很正常,因为Shiro做认证的时候必定要走executeLogin。这时候会Shiro会给请求颁发授权对象。有了授权对象,你的请求才会继续往下走到Web方法。打个比方,你虽然买了机票,但是在登机的时候还要换登机牌,就是这个道理,Token是外部使用的,Shiro内部并不需要Token。只有走Web方法的login这才需要走数据库,所以你不用担心。
    回复 有任何疑惑可以回复我~ 2021-03-08 07:28:06
  • 提问者 讨厌往昔3945544 回复 神思者 #3
    但是,我每回打断点的时候他都会进入doGetAuthenticationInfo,这个方法里面不是有userService.searchById,返回的SimpleAuthenticationInfo也不知道放在哪里了,感觉就是每次请求都要查一下数据库然后生成新的SimpleAuthenticationInfo
    回复 有任何疑惑可以回复我~ 2021-03-08 10:18:06
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信