• 关于shiro的猜测


    记录一下自己的猜测,等到有能力阅读源码的时候,再验证一下猜测是否成立


    最近研究了一下shiro整合JWT,上网查了一些资料,写了一个简单的实验项目。

    我使用的测试工具是postman,之前在没有整合JWT之前,我发现如果不登录的情况下直接访问授权资源是不被允许的,后来我尝试着在登录之后,改掉postman请求中header中的sessionid,发现访问失败了。

    由此猜测shiro在登录后,会为用户创建session,访问授权资源时如果没有提供正确的sessionid则视为未登录(仅仅是猜测,水平有限没看过源码)

    否则的话,修改了sessionid为什么会影响访问呢?

    之后我使用整合了JWT的项目尝试了一下同样的操作,发现怎么修改sessionid都丝毫不会影响访问。

    整合的方式参考了网上的一篇文章,自定义了过滤器,并应用于所有路径。

    当http请求提供了token时,会进行认证、授权,如果没有提供token,则也会允许通过,但不会为该用户进行认证,这个判断是为了当用户访问获取token的接口时不会被拦截而设计。

    第一次获取token会验证用户的用户名和密码,验证无误则提供给用户一个token。

    以后每次访问都携带token,每一次都进行认证授权的操作。

    那么再延伸思考一下:

    如果我的第一个猜想成立的话,那么当访问分布式项目的时候,如果没有通过一些方案共享session的情况下,则可能导致用户第一次登陆创建session,第二次访问的服务端没有他的session而被认定为未登录。

    但是,如果整合了JWT就避免了这个问题,每次携带令牌访问,每次都重新认证然后授权。

  • 相关阅读:
    关于ADO.NET参数化查询的提问
    PushSharp的使用
    关于WCF的一些知识点
    关于Expression表达式树的拼接
    设计模式-策略模式
    jq图片展示插件highslide.js简单dom
    JS实现手机访问pc网址自动跳转到wap网站
    CARVARS 圆形进度条
    vue-router的几种用法
    vscode 超好用的前端插件
  • 原文地址:https://www.cnblogs.com/wxdmw/p/13932794.html
Copyright © 2020-2023  润新知