openapi可以完全开放访问,也可以使用jwt token进行简单的认证,还可以使用shiro支持更细致的权限管理。

handler.yml配置了security和shiro两个handler:

security:校验请求头Authorization是否符合jwt token规范,是否超时过期等

shiro:校验jwt token里面的user_id用户,是否有权限访问某个接口

获取jwt token有两个接口:

  1. /service/layui/login,adminLayuiHandler,登录时会同时校验验证码和用户密码
    用于前后端分离时的登录页面,登录成功之后即可从响应中获取token值
  2. /openapi/token,swagger,Example有一个长期可用的token值(生产上已更换私钥所以此token无效)
    配置了JwtMockHandler响应token,仅用于测试

生产时禁用示例token:生成私有的server.keystore、server.crt即可,可以参考sh start.sh keystore命令

shiro授权收到了shiro.ini配置的启发,由于这里使用了无状态、无会话的认证,因此登录时没有使用shiro,也没有引入RBAC相关表结构

mvn test –Dtest=com.xlongwei.light4j.RedisTest#shiro,提供了示例的权限控制:

shiro.users={admin=123456,admin, steve=123456,admin}

shiro.roles={admin=*:*:*}

shiro.urls={/openapi/upload*/**=roles["admin,user",admin],perms[openapi:upload:*,"service:upload:upload,delete"]}

使用了redis的map数据结构,支持用户admin、steve登录,支持灵活配置用户、角色、权限并即时生效(比shiro.ini更灵活方便)

roles["admin,user",admin]:(admin and user) or admin,用户admin不满足admin and user,但是满足or admin,因此鉴权通过

perms[openapi:upload:*,"service:upload:upload,delete"]:用户admin为超级权限*:*:*,后面这个权限需要双引号避免被逗号分隔造成歧义

MyJwtShiroHandler直接使用token登录shiro,自定义了JwtAuthenticationToken、JwtAuthenticationRealm,通过token获得userId,再获取roles、perms

checkUrls方法检查了当前用户是否有权限访问当前请求路径。

jwt token and shiro的更多相关文章

  1. ASP.NET Core 实战:基于 Jwt Token 的权限控制全揭露

    一.前言 在涉及到后端项目的开发中,如何实现对于用户权限的管控是需要我们首先考虑的,在实际开发过程中,我们可能会运用一些已经成熟的解决方案帮助我们实现这一功能,而在 Grapefruit.VuCore ...

  2. 关于 IdentityServer4 中的 Jwt Token 与 Reference Token

    OpenID Connect(Core),OAuth 2.0(RFC 6749),JSON Web Token (JWT)(RFC 7519) 之间有着密不可分联系,对比了不同语言的实现,还是觉得 I ...

  3. 如何在启用JWT Token授权的.NET Core WebApi项目中下载文件

    背景 前几天,做项目的时候遇到一个文件下载的问题.当前系统是一个前后端分离的项目,前端是一个AngularJs项目, 后端是一个.NET Core WebApi项目.后端的Api项目使用了Jwt To ...

  4. 【ASP.NET Core快速入门】(十一)应用Jwtbearer Authentication、生成jwt token

    准备工作 用VSCode新建webapi项目JwtAuthSample,并打开所在文件夹项目 dotnet new webapi --name JwtAuthSample 编辑JwtAuthSampl ...

  5. Django JWT Token RestfulAPI用户认证

    一般情况下我们Django默认的用户系统是满足不了我们的需求的,那么我们会对他做一定的扩展 创建用户项目 python manage.py startapp users 添加项目apps INSTAL ...

  6. SpringSecurityOAuth使用JWT Token

    ⒈JWT? JWT(Json Web Token),是Json的一个开放的Token标准. 1,自包含,SpringSecurityOAuth的默认Token是UUID的一个随机的无意义的字符串,并不 ...

  7. 咏南中间件支持JWT TOKEN

    咏南中间件支持JWT TOKEN

  8. Spring Cloud OAuth2.0 微服务中配置 Jwt Token 签名/验证

    关于 Jwt Token 的签名与安全性前面已经做了几篇介绍,在 IdentityServer4 中定义了 Jwt Token 与 Reference Token 两种验证方式(https://www ...

  9. 菜鸟入门【ASP.NET Core】11:应用Jwtbearer Authentication、生成jwt token

    准备工作 用VSCode新建webapi项目JwtAuthSample,并打开所在文件夹项目 dotnet new webapi --name JwtAuthSample 编辑JwtAuthSampl ...

随机推荐

  1. 在Pytorch上使用稀疏矩阵

    在Pytorch上使用稀疏矩阵 最近在写一个NLP的小项目,用到了Pytorch做神经网络模型.但是众所周知NLP的一个特点就是特征矩阵是稀疏矩阵,当时处理稀疏矩阵用的是scipy.sparse,现在 ...

  2. SpringBoot整合Mybatis问题

    IDEA对xml文件处理的方式不同 在Eclipse中到dao文件与mapper.xml文件只要在同一级目录下即可 在IDEA中mapper.xml要放在resources目录下 注:resource ...

  3. 有趣的"=="与"==="

    console.log([]==![]);//true //"=="会进行类型转换,转换成统一类型进行比较 // !符号优于==,[]boolean值为TRUE,所以![]就是FA ...

  4. Linux下mysql不区分大小写设置

    Linux环境下的MySQL数据库的表名默认是区分大小写的 Windows环境下的MySQL数据库的表名默认是不区分大小写的 所以Linux下想mysql不区分下大写可以查看/etc/my.cnf文件 ...

  5. Spring Data JPA 大纲归纳

    第一天: springdatajpa day1:orm思想和hibernate以及jpa的概述和jpa的基本操作 day2:springdatajpa的运行原理以及基本操作 day3:多表操作,复杂查 ...

  6. c#复制文件夹和文件

    /// <summary> /// 拷贝文件夹 /// </summary> /// <param name="srcdir"></par ...

  7. 原生js为页面添加爱心特效和判断手机端还是电脑端登录

    <!-- 为页面添加爱心特效 --> <script type="text/javascript"> (function (window, document ...

  8. 算法---FaceNet+mtcnn的使用记录

    FaceNet+mtcnn---ubutntu系统下的使用记录 @WP20190307 由于先配置了FaceNet算法,中途遇到了点问题,单独又配置了mtcnn进行学习,没有深入,蜻蜓点水.今天,在尝 ...

  9. golang embedded structs

    golang 中把struct 转成json格式输出 package main import ( "encoding/json" "fmt" ) type Pe ...

  10. JSON 语法 数据格式

    我们先来看下w3cschool对json的定义: JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是存储和交换文本信息的语法.类似 XM ...