在 Shiro+SpringBoot+JWT 的项目中的问题,麻烦会 Shiro 的大佬解答一下,谢谢 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
janyork
V2EX    Java

在 Shiro+SpringBoot+JWT 的项目中的问题,麻烦会 Shiro 的大佬解答一下,谢谢

  •  
  •   janyork 2022 年 12 月 8 日 2536 次点击
    这是一个创建于 1223 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在 Shiro+SpringBoot+JWT 的项目中,因为是前后分离+Token 验证,而 Shiro 默认是依靠 Session 来处理一些状态,而且登也是通过 UserPassWoldToken 来实现登录验证的,但是前后分离,我们登录只需要去数据库验证密码后返回 Token ,不需要 Shiro 将用户信息通过 Subject 的 login 去登录校验并缓存。

    如上图,这样就是不可取的,因为我们配合 JWT 的登录逻辑是不一样的,得这样实现:

    image.png

    我密码使用了 MD5+散列+盐加密,原来 shiro 是有一个自动的机制,也就是 HashedCredentialsMatcher ,这个凭证校验器可以帮你校验密码是否对应数据库中已经加密的密码。

    我尝试过,发现貌似不太行,我也配置了 Realm 中的配置,也就是返回盐与密码。

    当前,现在我给他删掉了,因为用不了,我还是改成了直接校验 Token 的方式,这应该没问题吧,我也不太熟这个 Shiro 。

    反正现在接口我就直接给密码先加密在对比。

    image.png

    我想问问,前后分离+JWT 的系统下,shiro 的 HashedCredentialsMatcher (也就是 Shiro 的凭证校验器),是不是不能用啊,还是我配置有问题?

    我试的时候,Debug 发现,它最后会去与缓存的用户 info 对比,我登录直接校验返回 token ,就没有用户给他缓存呀,因为我没有用它的subject.login(token);这个方法去登录,他缓存中的用户 info 就是 null 。

    还望会的大佬解答一下。

    9 条回复    2022-12-09 08:57:02 +08:00
    me221
        1
    me221  
       2022 年 12 月 8 日
    你的问题我不会

    你的主题我想要
    janyork
        2
    janyork  
    OP
       2022 年 12 月 8 日
    @me221 主题是 IDEA 新 UI+xcode 主题+图标美化包(叫啥 ICO 去了),字体是站酷快乐体
    alen0206
        3
    alen0206  
       2022 年 12 月 8 日
    第二个 login 接口看下来其实没有和 shiro 有什么交互,配置的 HashedCredentialsMatcher 这个 bean 其实没用
    cslive
        4
    cslive  
       2022 年 12 月 8 日
    自定义一个 Filte 类,继承 BasicHttpAuthenticationFilter ,这个方法 executeLogin 重写,判断请求有无 token;
    用这个判断有无登录
    Realm 判断你是不是合法 token
    a5X77vajGRyLA2aF
        5
    a5X77vajGRyLA2aF  
       2022 年 12 月 8 日
    用 jwt ,直接自己继承 servlet 的 filter 实现认证功能,不需要 shiro 。
    Bingchunmoli
        6
    Bingchunmoli  
       2022 年 12 月 9 日 via Android
    建议百度 shiro 实现 jwt 。 很多种方式
    janyork
        7
    janyork  
    OP
       2022 年 12 月 9 日
    @alen0206 我也是这样想的,用 JWT 是不是 shiro 就不需要配置凭证校验器,只能自己用 MD5 加密去对比,他不能自动对比了。
    janyork
        8
    janyork  
    OP
       2022 年 12 月 9 日   1
    @Bingchunmoli 你猜我为什么来这儿问,百度翻遍了,用凭证校验器都是没有用 JWT 的,用 JWT 的文章又没有去进 MD5 加密配置
    janyork
        9
    janyork  
    OP
       2022 年 12 月 9 日
    @yusheng88 权限需要 shiro ,我大概明白了,感谢
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3165 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 14:17 PVG 22:17 LAX 07:17 JFK 10:17
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86