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. HDU5124lines题解-堆+贪心的一个新方法

    题目链接 https://cn.vjudge.net/problem/HDU-5124 胡扯 感觉说新方法好像有点不太好,但是翻了十几篇博客都是清一色离散化之类的... 为什么会做这道题呢?因为前几天 ...

  2. windows下Jmeter压测端口占用问题(亲测有效)

    windows下Jmeter压测端口占用问题 1 报错信息描述 压测的初期,在设置了 150qps/s 的并发数下压测几分钟后 Jmeter 就出现了如下报错. JAVA.NET.BINDEXCEPT ...

  3. 原生js实现选项卡样式切换的几种方式。

    先分享一个不能实现的实例(因为es5没有块作用域) for(var i=0; i<list.length; i++ ) { list[i].onclick = function(){ tabch ...

  4. 安卓开发之ArrayAdapter使用

    package com.lidaochen.test; import android.support.v7.app.AppCompatActivity; import android.os.Bundl ...

  5. springboot集成websocket的两种实现方式

    WebSocket跟常规的http协议的区别和优缺点这里大概描述一下 一.websocket与http http协议是用在应用层的协议,他是基于tcp协议的,http协议建立链接也必须要有三次握手才能 ...

  6. SpringCloud之Hystrix容错保护原理及配置

    1 什么是灾难性雪崩效应? 如下图的过程所示,灾难性雪崩形成原因就大致如此: 造成灾难性雪崩效应的原因,可以简单归结为下述三种: 服务提供者不可用.如:硬件故障.程序BUG.缓存击穿.并发请求量过大等 ...

  7. LNMP安装与配置之Nginx

    Nginx简介 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Ramb ...

  8. 01 数据库sql

    1, 关于mysql,常去的地方有:https://www.yiibai.com/mysql, http://tool.oschina.net/apidocs/apidoc?api=mysql-5.1 ...

  9. [USACO15FEB]Superbull 超级牛

    题意概况 题目描述 \(Bessie\)和她的朋友们正在一年一度的\(Superbull\)锦标赛中打球,而\(Farmer John\)负责让比赛尽可能激动人心. 总共有 \(N\) 支队伍 \(1 ...

  10. Xadmin相关实现

    一,保存搜索条件(Save search conditions) kept conditions(保存条件)的应用场景比较常见,在我们查询时,可以实现多条件的筛选查询,比如:在淘宝上,选择了其中的一个 ...