当前位置:   article > 正文

Shiro实战系列--整合jwt+通过url路径控制权限_shiro+jwt控制用户权限

shiro+jwt控制用户权限

原文网址:Shiro实战系列--整合jwt+通过url路径控制权限_IT利刃出鞘的博客-CSDN博客

简介

说明

本文用实例介绍SpringBoot整合shiro的方法。采用jwt+url权限的方式控制权限。

  1. 使用jwt替代默认的authc作为认证方式,通过url路径控制授权。
  2. 其他尽量使用原生的shiro配置,尽量少自定义配置。
  3. 我自测通过,代码可用。

shiro用法我写了一个系列

有如下文章:

  1. Shiro实战系列--用Session控制权限_IT利刃出鞘的博客-CSDN博客
  2. Shiro实战系列--整合shiro-redis_IT利刃出鞘的博客-CSDN博客
  3. Shiro实战系列--整合jwt_IT利刃出鞘的博客-CSDN博客
  4. Shiro实战系列--整合jwt+通过url路径控制权限_IT利刃出鞘的博客-CSDN博客

关联文章

本文是在此文章基础上进行修改,修改点如下:

  • 数据库
    • t_permission表的name字段改为url字段
    • t_permission相应的插入的数据发生变化
  • Mapper
    • PermissionMapper
      • 原先:返回t_permission.name字段
      • 本文:返回t_permission.url字段
  • Controller
    • 原先:使用@RequiresPermissions、@RequiresRoles控制权限
    • 本文:去掉这两个注解,通过url控制权限
  • Shiro配置
    • 注册授权过滤器(url路径过滤器)
      • 提供url路径过滤器(UrlFiter类)
      • 将url路径过滤器注册进去(ShiroConfig#shiroFilterFactoryBean) 
    • 修改认证过滤器(JwtFilter)
      • 原先:只需通过返回true或者executeLogin即可
      • 本文:自定义响应数据。(若不这么写,响应数据会很不友好,因为我们已经不是shiro的标准用法了)

除了上述修改之外,其他的代码、逻辑一点都没变。

测试

测试超级管理员(admin)

启动项目,访问:http://localhost:8080/doc.html

1.测试登录

  1. 登录成功
  2. 可以看到,会返回来一个Set-Cookie头,值是token。

2.测试有资源权限的接口

本处测试增加产品接口。

  1. 成功访问。
  2. 在请求时会传递Cookie

我使用标准的:Set-Cookie,Cookie来做认证的。若是自定义的header,需要手动写入:

3.测试登出

4.再次访问接口

  1. 访问成功。
  2.  因为token还没过期,浏览器也还会将其发给服务端,所以成功。

测试产品管理员(productManager)

启动项目,访问:http://localhost:8080/doc.html

1.测试登录

  1. 登录成功
  2. 可以看到,会返回来一个Set-Cookie头,值是token。

2.测试有资源权限的接口

本处测试增加产品接口。

  1. 成功访问。
  2. 在请求时会传递Cookie

3.测试无资源权限的接口

本处测试增加订单接口。

  1. 访问失败。
  2. 在请求时会传递Cookie
  3. 有一处细节:提示是红色的。

点进去看,可以看到状态码是我指定的:403

重启服务再请求

1.登录

登录成功 

2.重启服务器

重启Idea启动的应用。

3.访问有权限的接口

本处访问产品增加接口。

  1. 可以看到,访问成功。

超时后再请求

1.修改配置文件,暂时将token过期时间改短(本处改为10秒)

application.yml

2.登录

3.等待大于10秒之后再请求

请求失败。

我代码里指定这种错误为401,点进去验证下:

代码

上边只是部分内容,为便于维护,本文已迁移到此地址:Shiro整合jwt-通过url控制权限 - 自学精灵

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/989934?site
推荐阅读
相关标签
  

闽ICP备14008679号