Need help with bootshiro?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

tomsun28
539 Stars 234 Forks MIT License 162 Commits 0 Opened issues

Description

基于 springboot+shiro+jwt 的真正restful URL资源无状态认证权限管理(前后端分离,前端项目usthe)线上注册用户为体验给了最大权限,请不要随意删除

Services available

!
?

Need anything else?

Contributors list

No Data

强烈自荐一个全新认证鉴权项目 sureness - 面向restful api的权限认证框架, 配置少灵活度高,长期支持

sureness主页 - su.usthe.com
sureness github地址
sureness gitee地址

sureness
是我们在使用
java
权限框架
shiro
之后,吸取其良好设计加上一些想法实现的全新认证鉴权项目
面对
restful api
的认证鉴权,基于
rbac
(用户-角色-资源)主要关注于对
restful api
的安全保护
无特定框架依赖(本质就是过滤器处拦截判断,已有springboot,quarkus,javalin,ktor等demo)
支持动态修改权限配置(动态修改哪些api需要被认证,可以被谁访问)
支持主流http容器 servlet 和 jax-rs
支持多种认证策略,
jwt, basic auth
... 可扩展自定义支持的认证方式
基于改进的字典匹配树拥有的高性能
良好的扩展接口, demo和文档, 一个jar包就搞定
    com.usthe.sureness
    sureness-core
    0.1

bootshiro

线上演示
管理系统
druid sql监控 admin/admin Swagger api文档
java doc

  • bootshiro
    是基于
    springboot+shiro+jwt
    的真正
    restful URL
    资源无状态认证权限管理系统的后端,前端usthe
  • 区别于一般,提供页面可配置式的,动态的
    restful api
    安全管理支持
  • 数据传输动态秘钥加密,
    jwt
    过期刷新,用户操作监控等 加固应用安全

使用和一些约定


  • 您使用此项目在后端开发好
    api
    后,需要在前端页面 资源配置->API管理 新增基于
    ant
    匹配风格的
    api
    (约定没有配置的api没有保护)
  • eg:
    获取角色关联的对应用户列表
    rest-url
    /role/user/{roleId}/{currentPage}/{pageSize}
    访问方式为
    GET
    , 您需要在页面新增
    api:
    /role/user/*/*/*
    GET
    方式
  • 自定义
    url
    匹配链约定为
    url=
    url+"=="+httpMethod
  • 页面添加了
    api
    后,您需要在 资源配置->角色管理 配置您想要授权角色的API,菜单,关联用户等资源(约定授权给
    auth_anon
    角色的
    api
    可以被所有人访问,注意没有授权给任何角色的api是可以被任何人访问的)
  • 授权菜单在第一次登录时已经获取存储到
    sessionStorage
    防止重复获取,您授权变更菜单之后想要看的效果需要关闭页面重新打开(或者清除
    sessionStorage
    之后会自动获取授权菜单)
  • have fun

学习交流QQ群 482621971
生活不易,(5月中后)求接私活

项目的基础框架设计:

总的长这样:

image1


前端usthe

基于

angular5 + angular-cli + typeScript + rxjs + bootstrap + adminLTE
,践行angular最佳实践。
过程中node,webpack等有用到过,但我不熟。。。

后端bootshiro

基于

springboot + apache shiro + mybatis
框架,restful风格api,自定义状态码,json-web-token,druid数据库连接池,swagger文档生成,redis存储refreshtoken和动态秘钥,maven,MD5单向加密和AES双向等。。。

gate -nginx

这个nginx作为反向代理服务器,解决了跨域,真实IP头(现服务器端支持跨域可不用nginx)。另一个nginx作为angular应用服务器,tomcat作为bootshiro的服务器。

反向代理的nginx.conf见: conf

持续集成

流程长这样~:

image2

增加kubernetes支持:
bootshiro.yaml

详细实现技术见另一篇: docker学习

相关文档


部署


1.IDE启动调试

  • fork 项目到自己的仓库(欢迎star^.^)
  • clone 项目到本地 git clone https://gitee.com/yourName/bootshiro.git
  • 用idea导入
  • 更改开发环境mysql数据库和redis地址(前提安装数据库并导入usthe.sql创建数据库usthe)
  • 运行BootshiroApplication
  • bootshiro就可以提供api了 http://localhost:8080
  • 推荐使用postman进行api调试
  • 项目中的postmantestexample.json文件就是postman样例,导入即可

2.docker本地启动

  • fork 项目到自己的仓库(欢迎star^.^)
  • clone 项目到本地 git clone https://gitee.com/yourName/bootshiro.git
  • 更改生产环境mysql数据库和redis地址(前提安装数据库并导入usthe.sql创建数据库usthe)
  • 前提已经存在maven环境,docker环境(docker常用看这里)
  • mvn clean install -Dmaven.test.skip=true打出jar包
  • 在项目目录下 docker build -t bootshiro:1.0 .
  • docker images看是否生成镜像成功
  • 运行 docker run -d -p 8080:8080 --name haiGirl bootshiro:1.0
  • docker ps 就可以看见您的haiGirl了
  • bootshiro就可以提供api了 http://localhost:8080

3.jenkins+docker持续集成持续部署CICD

  • fork 项目到自己的仓库(欢迎star^.^)
  • clone 项目到本地 git clone https://gitee.com/yourName/bootshiro.git
  • 更改生产和开发环境mysql数据库和redis地址(前提安装数据库并导入usthe.sql创建数据库usthe)
  • 搭建CICD环境有点繁琐,看这里最下面
  • 参照搭建完成后,bootshiro对应的jenkins下运行shell: ```` #!/bin/bash

build in jenkins sh

docker docker hub仓库地址,之后把生成的镜像上传到 registry or docker hub

REGISTRY_URL=127.0.0.1:5000

docker login --username tomsun28 --password xxxx

根据时间生成版本号

TAG=$REGISTRYURL/$JOBNAME:

date +%y%m%d-%H-%M

使用maven 镜像进行编译 打包出 jar 文件

docker run --rm --name mvn -v /opt/dockerWorkspace/maven:/root/.m2 \ -v /opt/dockerWorkspace/jenkinshome/workspace/$JOBNAME:/usr/src/mvn -w /usr/src/mvn/ \ tomsun28/maven:1.0 mvn clean install -Dmaven.test.skip=true

使用放在项目下面的Dockerfile打包生成镜像

docker build -t $TAG $WORKSPACE/.

docker push $TAG docker rmi $TAG

判断之前运行的容器是否还在,在就删除

if docker ps -a | grep -i $JOBNAME;then docker rm -f $JOBNAME fi

用最新版本的镜像运行容器

docker run -d -p 8085:8080 --name $JOBNAME -v /opt/dockerWorkspace/tomcat/$JOBNAME/logs:/opt/tomcat/logs $TAG

仓库

gitee(main rep):

bootshiro
usthe

github:

bootshiro
usthe

。。。。。持续同步更新。。。。

======================================

欢迎一起完善哦^^



效果展示

image4

image5

image6

image7

thanks:

Howieair的小猪图标
zhangkaitao的跟我学shiro
网络上前辈们的教程文章开源项目

Thanks Open Source license support by jetBrains Open Source


We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.