网站首页 > 技术文章 正文
技术框架
springboot+shiro+oltu+thymeleaf+vue.js
项目地址:秋风 (qiufeng9862) - Gitee.com
单服务版本: OAuth2-SSO
增加微服务版本,具体地址查看mfish-cloud
项目介绍
Maven项目, 字符编码: UTF-8;
基于springboot框架整合shiro安全验证框架,基于oltu实现oauth2单点登录认证
前端采用thymeleaf+vue.js实现
项目由core,web_oauth2_server,app_oauth2_server三部分组成
core为核心验证逻辑
web_oauth2_server提供web前端通过跳转方式登录
app_oauth2_server提供手机app登录接口
主要技术版本
JDK(1.8)
springboot(2.2.4.RELEASE)
shiro(1.4.2)
oltu(1.0.2)
功能列表
当前版本 V1.0.9
1.支持扫码登录、账号密码、短信验证码登录、相同session免登录(后面版本扩充多种登录方式认证)
2.支持authorization_code,password,refresh_token三种获取token方式
3.支持redis session缓存
4.支持热用户,热客户端暂存 (账号信息,客户端信息访问后暂存redis中,下次请求直接访问redis不再请求数据库,长期不使用会被清理)
5.支持账号登录互斥功能(不同电脑或手机登录时踢出之前登录的账号)
6.支持登录日志记录
后期计划
v1.1.0
1.增加流控
v2.0.0
1.增加权限管理
安装教程
- 使用MAVEN命令将代码导入到idea或者其他IDE中
- 安装lombok插件(如果已安装忽略此步骤)
- 执行目录中 SQL建表语句 创建登录相关表
- 安装本机redis,并启动
- 运行
使用说明
/swagger-ui.html查看接口文档
- 获取code
访问/oauth2/authorize?response_type=code&client_id={client_id}&redirect_uri={redirect_uri}&state={state} - 输入账号admin 密码!QAZ2wsx 提交
- 系统回调{redirect_uri}?code={code}&state={state}
- 示例:
访问 /oauth2/authorize?response_type=code&client_id=system&redirect_uri=http://baidu.com
返回 baidu.com?code=**************** - 获取token
根据回调返回code,post方式调用/oauth2/accessToken接口返回token信息
注意:Content-Type=application/x-www-form-urlencoded - 示例参数:
header配置Content-Type=application/x-www-form-urlencoded
[{"key":"client_id","value":"system","description":""},{"key":"client_secret","value":"system","description":""},{"key":"grant_type","value":"authorization_code","description":""},{"key":"code","value":"77c9c36b1d9ef13f366d20f47789c80b","description":""},{"key":"redirect_uri","value":"http://baidu.com","description":""}] - 获取用户信息
get方式请求/user/info?access_token={access_token}获取用户信息 - 示例:
/user/info?access_token=****************
或者
也可将token信息放入header中 设置Authorization=Bearer{access_token} get请求http://localhost:19888/user/info - 用户登出
访问/user/revoke 登出账号
猜你喜欢
- 2025-01-18 弱类型语言的php对于 0 、"0"、"000" 、"00" 判断与处理问题
- 2025-01-18 word中公式输入方法
- 2025-01-18 VLOOKUP函数之另类用法,让领导对你刮目相看
- 2025-01-18 LOOKUP中0,1是什么鬼,困扰我多年的疑惑,这课讲明白了
- 2025-01-18 Excel – 在多个匹配结果中,按规定查找出第n个结果
- 2025-01-18 从入门到提高一一函数定义域
- 2025-01-18 C语言return 0一定要有吗?
- 2025-01-18 什么是0℃恒温器?
- 2025-01-18 VLOOKUP函数只能从左向右匹配查找?与IF函数搭配实现逆向查找
- 2025-01-18 TCP连接状态的多种判断方法
- 05-09Linux 安装Oracle11.2.0.4 (静默安装法)
- 05-09Oracle 10g安装64位图解流程(Oracle 10g安装64位图解流程图怎么画)
- 05-09Centos7命令行安装Oracle11g(centos7安装oracle11g数据库)
- 05-09Vite 的实现原理,确实很巧妙(深入vite原理)
- 05-09微信小程序中使用云函数进行开发(微信小程序创建云函数)
- 05-09详细讲解npm install命令执行,都干了哪些事情?
- 05-09如何在 Node.js 中使用 .env 文件管理环境变量 ?
- 05-09离线环境下运行Vue项目(离线安装vue-cli)
- 最近发表
-
- Linux 安装Oracle11.2.0.4 (静默安装法)
- Oracle 10g安装64位图解流程(Oracle 10g安装64位图解流程图怎么画)
- Centos7命令行安装Oracle11g(centos7安装oracle11g数据库)
- Vite 的实现原理,确实很巧妙(深入vite原理)
- 微信小程序中使用云函数进行开发(微信小程序创建云函数)
- 详细讲解npm install命令执行,都干了哪些事情?
- 如何在 Node.js 中使用 .env 文件管理环境变量 ?
- 离线环境下运行Vue项目(离线安装vue-cli)
- 《小鑫发现》之GraphQL框架Prisma
- 如何写一个webpack插件(一)(webpack常用插件和loader)
- 标签列表
-
- cmd/c (64)
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- js判断是否空对象 (63)
- pythoncase语句 (81)
- es6includes (73)
- sqlset (64)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- js数组插入 (83)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- outofmemoryerror是什么意思 (64)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)