weixin_慕沐1435627
2018-11-22 18:02
当第一次登陆后,并没有在cookie或者其他域保存任何信息 也就是说没有任何信息可以证明用户登陆了
但是第二次直接跳转页面到testrole这个路径 却有第一次登陆的角色的信息 服务器识别到了用户曾经登陆过 也知道用户的角色和权限
请问一下是怎么识别的 是因为配置的问题吗
你登陆了,subject内有信息,服务器为关闭,肯定有你的信息,你是admin角色所以可以访问testrole,没有admin1这个角色所以报错
原理如下:第一次后台认证成功后,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。
就是存在请求体里面
shiro框架 应该也是通过Jsessionid来判断是否已经登录的。登录成功后就有Jsessionid,所以可以继续访问其他url。你可以通过浏览器F12工具 把Jsessionid再次编辑成其他的内容 然后请求,就会被重新打回login.html页面了。
Shiro安全框架入门
48036 学习 · 332 问题
相似问题