大家好,我是 Java 陈序员。权限认证是我们日常开发绕不过的话题,这是因为我们的应用程序需要防护,防止被窜入和攻击。

Java 后端开发中,实现权限认证有很多种方案可以选择,一个拦截器、过滤器也许就可以轻松搞定。当然,现在也有很多成熟的框架,供我们选择。轻量的 Shiro,Spring 家族的 SpringSecurity,是目前比较流行的框架。当然,二者孰优孰劣,仁者见仁智者见智!

随着业务的复杂和系统功能架构的演进,权限认证不再仅仅是登录授权的常规操作。而是要考虑到多种多样的场景,单点登录、前后端分离、记住密码、踢人下线等等。

今天要介绍的项目是史上功能最全的 Java 权限认证框架 —— Sa-Token.涵盖各种权限认证场景,有完善的文档和 SDK,可以轻松的集成到我们项目中使用!当然,也是我们可以学习的优秀开源项目!

项目介绍

Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式 Session 会话、微服务网关鉴权等一系列权限相关问题。

目前已集成——登录认证、权限认证、分布式 Session 会话、微服务网关鉴权、单点登录、OAuth2.0、踢人下线、Redis 集成、前后台分离、记住我模式、模拟他人账号、临时身份切换、账号封禁、多账号认证体系、注解式鉴权、路由拦截式鉴权、花式 token 生成、自动续签、同端互斥登录、会话治理、密码加密、jwt 集成、Spring 集成、WebFlux 集成。

项目地址:

https://github.com/dromara/Sa-Token

在线文档:

https://sa-token.cc/

功能介绍

Sa-Token 目前主要五大功能模块:登录认证、权限认证、单点登录、OAuth2.0、微服务鉴权。

  • 登录认证:多端登录、单端登录、同端互斥登录、七天免登录等多种登录策略只需改个配置即可完成

  • 权限认证:权限认证、角色认证、会话二级认证、注解鉴权、路由鉴权等多种姿势灵活鉴权

  • 单点登录:同域、跨域、共享 Redis、跨 Redis、前后端一体、前后端分离等提供各种架构下的 SSO 接入方案

  • OAuth2.0:轻松搭建 OAuth2.0 认证中心,支持四种授权模式,支持 openid 授权机制,支持二次扩展开发

  • 微服务鉴权:分布式 Session 会话、网关统一鉴权、RPC调用鉴权等,提供开箱即用的微服务认证方案

SpringBoot 环境集成

项目依赖

<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>1.37.0</version>
</dependency>

配置文件

sa-token:
# token 名称(同时也是 cookie 名称)
token-name: satoken
# token 有效期(单位:秒) 默认30天,-1 代表永久有效
timeout: 2592000
# token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结,默认-1 代表不限制,永不冻结
active-timeout: -1
# 是否允许同一账号多地同时登录 (为 true 时允许一起登录, 为 false 时新登录挤掉旧登录)
is-concurrent: true
# 在多人登录同一账号时,是否共用一个 token (为 true 时所有登录共用一个 token, 为 false 时每次登录新建一个 token)
is-share: true
# token 风格(默认可取值:uuid、simple-uuid、random-32、random-64、random-128、tik)
token-style: uuid
# 是否输出操作日志
is-log: true

代码实现

登录功能实现

public String doLogin(String username, String password){
// 此处仅作模拟示例,真实项目需要从数据库中查询数据进行比对
if("admin".equals(username) && "admin".equals(password)) {
StpUtil.login(10001);
return "登录成功";
}
return "登录失败";
}

判断是否登录

public String isLogin() {
return "当前会话是否登录:" + StpUtil.isLogin();
}

最后

推荐的开源项目已经收录到 GitHub 项目,欢迎 Star

https://github.com/chenyl8848/great-open-source-project

或者访问网站,进行在线浏览:

https://chencoding.top:8090/#/

大家的点赞、收藏和评论都是对作者的支持,如文章对你有帮助还请点赞转发支持下,谢谢!

史上功能最全的Java权限认证框架!的更多相关文章

  1. Android史上功能最全的日历控件

    ※效果 ※用法 package com.fancyy.calendarweight; import java.util.ArrayList; import java.util.List; import ...

  2. shiro太复杂?快来试试这个轻量级权限认证框架!

    前言 在java的世界里,有很多优秀的权限认证框架,如Apache Shiro.Spring Security 等等.这些框架背景强大,历史悠久,其生态也比较齐全. 但同时这些框架也并非十分完美,在前 ...

  3. springboot集成轻量级权限认证框架sa-token

    sa-token是什么? sa-token是一个JavaWeb轻量级权限认证框架,主要解决项目中登录认证.权限认证.Session会话等一系列由此衍生的权限相关业务.相比于其他安全性框架较容易上手. ...

  4. 登陆模块,这个是很重要的模块,有shiro和spring security专门的权限认证框架

    登陆模块,这个是很重要的模块,有shiro和spring security专门的权限认证框架

  5. 史上最详细JVM,Java内存区域讲解

    本人免费整理了Java高级资料,一共30G,需要自己领取:传送门:https://mp.weixin.qq.com/s/JzddfH-7yNudmkjT0IRL8Q 运行时数据区域 JVM载执行Jav ...

  6. RocketMQ4.3.x 史上配置最全详解,没有之一

    最近整理了RocketMQ的配置参数一部分参考rocketmq技术内幕,一部分自己看源码猜测,有表述不清楚或不正确请广大网友指正 这里应该是最全的配置解析了,搞了2天.以后查询就好办了,仅此贡献给广大 ...

  7. 史上最详细版!java文件打包成exe,在未配置安装JDK和未配置的电脑上运行--转载

    原文地址:http://funine.iteye.com/blog/2220359 (本文所有素材将在文章最后附上) 准备工具exe4j, converticon.com(用于制做.ico格式的图片) ...

  8. 史上最难的一道Java面试题 (分析篇)

    博客园 匠心零度 转载请注明原创出处,谢谢! 无意中了解到如下题目,觉得蛮好. 题目如下: public class TestSync2 implements Runnable { int b = 1 ...

  9. iOS开发之第三方分享QQ分享,史上最新最全第三方分享QQ方式实现

    本文章源码地址: https://github.com/zhonggaorong/QQLoginDemo 项目搭建参考:  (包含QQ登录源码下载 . QQ sdk集成) http://blog.cs ...

  10. mongodb4版本,windows下的安装与配置(史上步骤最全最详细+图解)

    安装的是4.2.1版本,安装途中出现过很多错误,找遍各种博客基本没能解决 1.mongodb安装的官方地址: https://www.mongodb.com/download-center/commu ...

随机推荐

  1. 大模型落地实战指南:从选择到训练,深度解析显卡选型、模型训练技、模型选择巧及AI未来展望—打造AI应用新篇章

    大模型落地实战指南:从选择到训练,深度解析显卡选型.模型训练技.模型选择巧及AI未来展望---打造AI应用新篇章 0.前言大模型发展史 早期阶段(1950s~1980s) 在1950年代初期,人们开始 ...

  2. ftp安装与配置 云服务器 CentOS7

    1.FTP的安装 #安装 yum install -y vsftpd #设置开机启动 systemctl enable vsftpd.service #启动 systemctl start vsftp ...

  3. 3D Object Detection Essay Reading 2024.03.27

    Point Transformer V3: Simpler, Faster, Stronger publish:CVPR2024 paper:https://arxiv.org/abs/2312.10 ...

  4. KingbaseES 临时表

    临时表在数据库管理和数据处理中有着广泛的应用,主要用于存储临时数据或进行中间计算.临时表中的数据对会话是私有的,每个会话只能看到和修改自己会话的数据. KingbaseES支持本地临时表和全局临时表. ...

  5. KingbaseES 实现 MYSQL 的 delete limit 写法

    使用MySQL的用户可能会比较熟悉这样的用法,更新或删除时可以指定限制更新或删除多少条记录. update tl set xxx=xxx where xxx limit 10; delete from ...

  6. 简直了,被“Java并发锁”问题追问到自闭...

    故事 地铁上,小帅双目空洞地望着窗外...绝望,发自内心地感到绝望... 距离失业已经过去两个月了,这是小帅接到的第四次面试邀请."回去等通知吧...",简简单单的六个字,把小帅的 ...

  7. 战码先锋直播预告丨参与ArkUI,共建OpenHarmony繁荣生态

    OpenAtom OpenHarmony(以下简称"OpenHarmony")工作委员会首度发起「OpenHarmony开源贡献者计划」,旨在鼓励开发者参与OpenHarmony开 ...

  8. 【直播回顾】OpenHarmony知识赋能五期第六课——子系统相机解读

     5月26日晚上19点,知识赋能第五期第六节课 <OpenHarmony标准系统多媒体子系统之相机解读> ,在OpenHarmony开发者成长计划社群内成功举行.   本期课程,由深开鸿资 ...

  9. 1.NCC算法实现及其优化[基础实现篇]

    NCC算法实现及其优化 本文将集中探讨一种实现相对简单,效果较好的模板匹配算法(NCC) \[R(x,y)= \frac{ \sum_{x',y'} (T'(x',y') \cdot I'(x+x', ...

  10. 天气数据爬取+pyechart可视化

    数据爬取/处理 爬取深圳2021年全年的天气历史数据. 网址链接:https://lishi.tianqi.com/shenzhen/ 代码: import requests from lxml im ...