采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,
我想问一下,现在的意思是每次请求都要去login一下么,然后通过doGetAuthenticationInfo去请求一下数据库中的user是否正确,是这个意思么。
后端Java项目每次接收到的请求都要shiro做认证和授权,认证就是检验token,授权后面的章节有,这里不展开说明。你说的每次认证都走数据库是不对的。
但是我每回请求都会通过onAccessDenied,这个不是认证未通过授权的方法么,没有地方记录这个登录信息,验证完token就直接executeLogin,我怎么感觉每次请求都是登录一次的过程,请老师指点一下
这个很正常,因为Shiro做认证的时候必定要走executeLogin。这时候会Shiro会给请求颁发授权对象。有了授权对象,你的请求才会继续往下走到Web方法。打个比方,你虽然买了机票,但是在登机的时候还要换登机牌,就是这个道理,Token是外部使用的,Shiro内部并不需要Token。只有走Web方法的login这才需要走数据库,所以你不用担心。
但是,我每回打断点的时候他都会进入doGetAuthenticationInfo,这个方法里面不是有userService.searchById,返回的SimpleAuthenticationInfo也不知道放在哪里了,感觉就是每次请求都要查一下数据库然后生成新的SimpleAuthenticationInfo
登录后可查看更多问答,登录/注册
未来趋势型业务 + 前后端综合技术栈 + 惊艳的细节打磨
1.7k 19
1.7k 18
1.4k 14
326 13
1.2k 13