为了账号安全,请及时绑定邮箱和手机立即绑定

为什么第二次testrole1携带了登陆信息?

当第一次登陆后,并没有在cookie或者其他域保存任何信息 也就是说没有任何信息可以证明用户登陆了  

但是第二次直接跳转页面到testrole这个路径  却有第一次登陆的角色的信息   服务器识别到了用户曾经登陆过 也知道用户的角色和权限   

 请问一下是怎么识别的 是因为配置的问题吗

正在回答

4 回答

你登陆了,subject内有信息,服务器为关闭,肯定有你的信息,你是admin角色所以可以访问testrole,没有admin1这个角色所以报错

0 回复 有任何疑惑可以回复我~

原理如下:第一次后台认证成功后,shiro肯定生成了一个sessionId关联着某个subject。放到session管理器中。然后把sessionId通过http响应头set-Cookie的形式返回给浏览器。浏览器保留了该Cookie。下次访问第二个url时,http请求头里就携带了上次的cookie信息,也就是sessionId,然后shrio就可以通过从请求头中提取,查询内部的session管理器,取出关联的subject对象。


这种形式,只能适用于web。

如果前端是app或者小程序的情况,不太实用。因为有些框架是不支持设置cookie的,但是会支持设置header。所以如果前端是app或者小程序的话,一般会通过header来返回和获取对应的token(相当于sessionId)。我看jeectBoog就是放在请求头和响应头里的。那个token。

0 回复 有任何疑惑可以回复我~

就是存在请求体里面

0 回复 有任何疑惑可以回复我~

shiro框架 应该也是通过Jsessionid来判断是否已经登录的。登录成功后就有Jsessionid,所以可以继续访问其他url。你可以通过浏览器F12工具 把Jsessionid再次编辑成其他的内容 然后请求,就会被重新打回login.html页面了。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么第二次testrole1携带了登陆信息?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信