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

来源:4-3 通过注解配置授权

weixin_慕沐1435627

2018-11-22 18:02

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

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

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

写回答 关注

4回答

  • 一直走下去吧
    2018-12-12 20:36:52
    已采纳

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

  • 老板这西瓜挺甜给我来两斤橘子
    2021-09-21 14:51:48

    原理如下:第一次后台认证成功后,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。

  • qq_不进前五十不改名_0
    2019-12-24 17:07:25

    就是存在请求体里面

  • 慕妹2157580
    2018-12-26 16:35:59

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

Shiro安全框架入门

从零入门Shiro安全框架

48036 学习 · 332 问题

查看课程

相似问题