Skip to content

happy-to-code/jwt-shrio-springboot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

yida-jwt-shiro

项目基于 Spring Boot 2.1.13 ,使用JWT进行鉴权授权,shiro进行权限控制。

开发环境

  • JDK:8
  • IDE:IntelliJ IDEA (后端)
  • 依赖管理:Maven
  • 数据库:MySQL 5.7.18

表结构的简介

    权限的认证和校验采用RBAC模型,总共有5张表,分别为useruser_rolerolerole_permissionpermission
其中user_rolerole_permission为中间表,user表和role表示一对多的关系,role表和permission表也是一对多的关系。

项目权限验证流程

1.用户填写用户名和密码后用POST请求访问/login接口,程序返回token令牌信息,失败则直接返回身份错误信息。

2.在之后接口的API请求中需要验证身份,请求的Headers中是否添加Authorization和登录时返回的token令牌。

3.服务端进行token认证,失败身份错误信息。

4.用JWT做认证(登录),Shiro做授权。


项目运行

  • 下载源码

  • 配置Java运行坏境,主要是JDK(基于1.8),maven

  • 创建shirojwt数据库,设置编码为UTF-8,执行shiroJwt.sql文件,初始化数据

  • 修改application.yml,更新MySQL账号和密码

  • IDEA运行DemoApplication,则可启动项目。或在yida-jwt-shiro目录下运行命令mvn clean package,然后在yida-jwt-shiro/target目录下运行java -jar yida-jwt-shiro-1.0-SNAPSHOT.jar命令


测试

  • 1、启动应用

    访问URL获取token

    POST http://localhost:8888/login
    

    Body参数

    {
    	"username":"admin",
    	"password":"admin"
    }

    返回值:

       {
           "code": 200,
           "msg": "Login success",
           "data": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1ODYxNTUzMzcsInVzZXJuYW1lIjoiYWRtaW4ifQ.XLjCcDCo0_Qjn-neIwfa1DfLH8xL1bYr8pSPv9zW6LU"
       }

  • 2、使用token访问API

2.1 我们先测试下不带token访问API的情况 我们可以看到直接报错了

2.2 同样的请求携带token

  • 3、测试权限控制之角色控制
   先解释下一个注解:
   @RequiresRoles(value = {"admin","guest"},logical = Logical.OR)
   这个注解的作用是携带的token中的角色必须是adminguest中的一个
   如果把logical = Logical.OR改成logical = Logical.AND,那么这个注解的作用就变成角色必须同时包含adminguest
    

3.1、我们先测试用admin登录,但要求角色是guest的情况

即注解是@RequiresRoles(value = {"guest"})这种情况,但我们给的token却是admin登录的token

  • 3、测试权限控制之权限控制
     惯例解释下注解:
     @RequiresPermissions(logical = Logical.OR, value = {"user:view", "user:edit"})
    @RequiresRoles类似,权限的的值放在value中,值之间的关系用Logical.ORLogical.AND控制

    在我们的数据库中,admin有两个角色,角色名分别是:adminguest,角色拥有的权限分别是:
    admin:[user:viewuser:edit],guest:[user:edit]

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published