Sa-TokenSa-Token
主题
首页文档博客
视频
乐之者java(登录认证/权限管理/apiKey等)抓蛙师(23集)朱老师的小课堂(7集)王清江唷 SSO篇(29集)fox说技术(7集)架构驿站(11集)王清江唷(99集)筑梦信仰-joy(20集)达达-Java(26集)晒太阳的盐(22集)[ + 课程提交 ]
案例
Gitee - Awesome-Sa-TokenGitHub - Awesome-Sa-TokenAtomGit - Awesome-Sa-Token
加群需求提交赞助🔥 SSO/OAuth2 商业版
安全推荐
开发者安全 ChecklistAPI 安全 Checklist腾讯代码安全指南Web 安全学习笔记OWASP Cheat Sheet SeriesPayloadsAllTheThings
相关资源
更新日志常见报错推荐公众号在线考试在线提问问卷调查
  • 开始

    • 框架介绍
    • 在 SpringBoot 环境集成
    • 在 WebFlux 环境集成
    • 在 Solon 环境集成
    • 其它环境集成示例
    • 源码运行指南
    • Sa-Token 集成示例大全下载
  • 基础

    • 登录认证
    • 权限认证
    • 踢人下线
    • 注解鉴权
    • 路由拦截鉴权
    • Session会话
    • 框架配置
  • 深入

    • 集成 Redis
    • 前后端分离
    • 自定义 Token 风格
    • Token 提交前缀
    • 同端互斥登录
    • 记住我模式
    • 登录参数 & 注销参数
    • 二级认证
    • 模拟他人 & 身份切换
    • 账号封禁
    • 密码加密
    • 会话查询
    • Http Basic/Digest 认证
    • 全局侦听器
    • 全局过滤器
    • 多账号认证
  • 单点登录

    • 单点登录简述
    • 搭建统一认证中心:SSO-Server
    • SSO-Server 认证中心开放 API 接口
    • SSO模式一 共享Cookie同步会话
    • SSO模式二 URL重定向传播会话
    • SSO模式三 Http请求获取会话
    • 配置域名校验
    • 定制化登录页面
    • 自定义API路由
    • 平台中心跳转模式
    • 匿名 client 接入
    • 单点注销
    • 前后端分离下的整合方案
    • 消息推送机制
    • 用户数据同步 / 迁移
    • NoSdk、ReSdk 模式与非 java 项目
    • SSO 代码 API 参考
    • 常见问题总结
    • Sa-Pro:单点登录商业版
  • OAuth2.0

    • OAuth2.0简述
    • OAuth2-Server搭建
    • OAuth2-Server端开放 API 接口
    • 自定义数据加载器
    • 配置 client 域名校验
    • 自定义 Scope 权限及处理器
    • 为 Scope 划分等级
    • 自定义 grant_type
    • 定制化登录页面与授权页面
    • 自定义 API 路由
    • OAuth2-Server端前后台分离
    • OpenId 与 UnionId
    • 开启 OIDC 协议
    • 使用注解校验 Access-Token
    • OAuth2-与登录会话实现数据互通
    • OAuth2 代码 API 参考
    • 常见问题总结
    • Sa-Max:统一认证商业版
  • 微服务

    • 分布式Session会话
    • 网关统一鉴权
    • 内部服务外网隔离
    • 依赖引入说明
  • 插件

    • AOP注解鉴权
    • 临时 Token 认证
    • Quick-Login快速登录插件
    • Alone独立Redis插件
    • Alone独立Redisson插件
    • 缓存层扩展
    • JSON 序列化扩展
    • 序列化插件扩展包
    • HTTP 请求扩展
    • 和 Thymeleaf 集成
    • 和 Freemarker 集成
    • 注解鉴权 SpEL 表达式
    • 和 jwt 集成
    • 和 Dubbo 集成
    • 和 gRPC 集成
    • API 接口参数签名
    • API Key 接口调用秘钥
    • Sa-Token 插件开发指南
    • 自定义 SaTokenContext 指南
  • API手册

    • StpUtil-鉴权工具类
    • SaSession-会话对象
    • SaTokenDao-数据持久接口
    • SaStrategy-全局策略
    • 全局类、方法
  • 框架设计

    • 仓库目录
    • 数据结构
  • 其它

    • 更新日志
    • 框架生态
    • 框架博客
    • 推荐公众号
    • 加入讨论群
    • Sa-Token 内容合作群
    • 赞助 Sa-Token
    • 需求提交
    • 问卷调查
  • 附录

    • 常见问题排查
    • 框架名词解释
    • Sa-Token功能结构图
    • 全局 Log 输出
    • 异步 & Mock 上下文
    • 未登录场景值详解
    • Token有效期详解
    • Session模型详解
    • 数据读写三大作用域
    • TokenInfo参数详解
    • 异常细分状态码
    • 自定义注解
    • 防火墙
    • 参考:把权限放在缓存里
    • 参考:把路由拦截鉴权动态化
    • 解决反向代理 uri 丢失的问题
    • 解决跨域问题
    • 技术选型:SSO 与 OAuth2 对比
    • 集成 MongoDB 参考一
    • 集成 MongoDB 参考二
    • 从 Shiro、SpringSecurity、JWT 迁移
    • issue 提问模板
    • 为Sa-Token贡献代码
    • Sa-Token开源大事记
    • 团队成员
    • Sa-Token框架掌握度--在线考试







----- 到底线了 -----

×

一个项目搞定:同域、跨域、共享Redis、跨Redis、前后端一体、前后端分离、纯 js、vue2、vue3、非 Sa-Token 项目、非 java 项目等架构下的 SSO 认证需求。

一次购买,永久授权。全源码交付,不含密 Jar。提供售后技术支持。

Sa-Token-Quick-Login 快速登录认证 ​


解决什么问题 ​

Sa-Token-Quick-Login 可以为一个系统快速的、零代码 注入一个登录页面

试想一下,假如我们开发了一个非常简单的小系统,比如说:服务器性能监控页面, 我们将它部署在服务器上,通过访问这个页面,我们可以随时了解服务器性能信息,非常方便

然而,这个页面方便我们的同时,也方便了一些不法的攻击者,由于这个页面毫无防护的暴露在公网中,任何一台安装了浏览器的电脑都可以随时访问它!

为此,我们必须给这个系统加上一个登录认证,只有知晓了后台密码的人员才可以进行访问

细细想来,完成这个功能你需要:

  1. 编写前端登录页面,手写各种表单样式
  2. 寻找合适的ajax类库,jQuery?Axios?还是直接前后台不分离?
  3. 寻找合适的模板引擎,比如jsp、Thymeleaf、FreeMarker、Velocity……选哪个呢?
  4. 处理后台各种拦截认证逻辑,前后台接口对接
  5. 你可能还会遇到令人头痛欲裂的模板引擎中ContextPath处理
  6. ……

你马上就会发现,写个监控页你一下午就可以搞定,然而这个登录页你却可能需要花上两三天的时间,这是一笔及其不划算的时间浪费

那么现在你可能就会有个疑问,难道就没有什么方法给我的小项目快速增加一个登录功能吗?

Sa-Token-Quick-Login便是为了解决这个问题!

适用场景 ​

Sa-Token-Quick-Login 旨在用最小的成本为项目增加一个登录认证功能

  • 简单:只需要引入一个依赖便可为系统注入登录功能,快速、简单、零代码!
  • 不可定制:由于登录页面不可定制,所以Sa-Token-Quick-Login非常不适合普通项目的登录认证模块,STQL也无意去解决所有项目的登录认证模块

Sa-Token-Quick-Login的定位是这样的场景:你的项目需要一个登录认证功能、这个认证页面可以不华丽、可以烂,但是一定要有,同时你又不想花费太多的时间浪费在登录页面上, 那么你便可以尝试一下Sa-Token-Quick-Login

集成步骤 ​

首先我们需要创建一个SpringBoot的demo项目,比如:sa-token-demo-quick-login

1、添加pom依赖 ​
xml
<!-- Sa-Token 启动依赖 -->
<dependency>
        <groupId>cn.dev33</groupId>
        <artifactId>sa-token-spring-boot-starter</artifactId>
        <version>1.46.0</version>
</dependency>
<!-- Sa-Token-Quick-Login 插件依赖 -->
<dependency>
	<groupId>cn.dev33</groupId>
	<artifactId>sa-token-quick-login</artifactId>
	<version>1.46.0</version>
</dependency>
1
2
3
4
5
6
7
8
9
10
11
12
2、启动类 ​
java
@SpringBootApplication
public class SaTokenQuickDemoApplication {
	public static void main(String[] args) {
		SpringApplication.run(SaTokenQuickDemoApplication.class, args);
		
		System.out.println("\n------ 启动成功 ------");
		System.out.println("name: " + SaQuickManager.getConfig().getName());
		System.out.println("pwd:  " + SaQuickManager.getConfig().getPwd());
	}
}
1
2
3
4
5
6
7
8
9
10
3、新建测试Controller ​
java
/**
 * 测试专用Controller 
 */
@RestController
public class TestController {
	// 浏览器访问测试: http://localhost:8081
	@RequestMapping({"/", "/index"})
	public String index() {
		String str = "<br />"
				+ "<h1 style='text-align: center;'>资源页 (登录后才可进入本页面) </h1>"
				+ "<hr/>"
				+ "<p style='text-align: center;'> Sa-Token " + SaTokenConsts.VERSION_NO + " </p>";
		return str;
	}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

测试访问 ​

启动项目,使用浏览器访问:http://localhost:8081,首次访问时,由于处于未登录状态,会被强制进入登录页面

登录

使用默认账号:sa / 123456进行登录,会看到资源页面

登录

也可以通过 Http Basic 的方式直接进行认证 (一般需要在专门的 API 测试工具下才能正常测试,浏览器会自动忽略@之前的信息)

url
http://sa:123456@localhost:8081/
1

可配置信息 ​

你可以在yml中添加如下配置 (所有配置都是可选的)

yaml
# Sa-Token-Quick-Login 配置
sa: 
	# 登录账号
	name: sa
	# 登录密码
	pwd: 123456
	# 是否自动随机生成账号密码 (此项为true时, name与pwd失效)
	auto: false
	# 是否开启全局认证(关闭后将不再强行拦截) 
	auth: true
	# 登录页标题
	title: Sa-Token 登录
	# 是否显示底部版权信息 
	copr: true
    # 指定拦截路径 
    # include: /**
    # 指定排除路径
    # exclude: /1.jpg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

注:示例源码在/sa-token-demo/sa-token-demo-quick-login目录下,可结合源码查看学习。Sa-Token 集成示例大全下载 。

使用独立jar包运行 ​

使用sa-token-quick-login只需引入一个依赖即可为系统注入登录模块,现在我们更进一步,将这个项目打成一个独立的jar包

通过这个jar包,我们可以方便的部署任意静态网站!做到真正的零编码注入登录功能。

打包步骤 ​

首先放上懒人链接:sa-quick-dist.jar,不想手动操作的同学可以直接点此链接下载打包后的jar文件

1、首先将 sa-token-demo-quick-login 模块添加到顶级父模块的<modules>节点中

xml
<!-- 所有模块 -->
<modules>
	<module>sa-token-core</module>
	<module>sa-token-starter</module>
	<module>sa-token-plugin</module>
	<module>sa-token-demo\sa-token-demo-quick-login</module>
</modules>
1
2
3
4
5
6
7

2、在项目根目录进入cmd执行打包命令

cmd
mvn clean package
1

3、进入\sa-token-demo\sa-token-demo-quick-login\target 文件夹,找到打包好的jar文件

cmd
sa-token-demo-quick-login-0.0.1-SNAPSHOT.jar
1

4、我们将其重命名为sa-quick-dist.jar,现在这个jar包就是我们的最终程序,我们在这个\target目录直接进入cmd,执行如下命令启动jar包

cmd
java -jar sa-quick-dist.jar
1

5、测试访问,根据控制台输出提示,我们使用浏览器访问测试: http://localhost:8080

sa-quick-start

如果可以进入登录界面,则代表打包运行成功
当然仅仅运行成功还不够,下面我们演示一下如何使用这个jar包进行静态网站部署

所有功能示例 ​

Case 1. 指定静态资源路径 ​
cmd
java -jar sa-quick-dist.jar --sa.dir file:E:\www
1

使用dir参数指定E:\www目录作为资源目录进行部署 (现在我们可以通过浏览器访问E:\www目录下的文件了!)

Case 2. 指定登录名与密码 ​
cmd
java -jar sa-quick-dist.jar --sa.name=zhang --sa.pwd=zhang123
1

现在,默认的账号sa/123456将被废弃,而是使用zhang/zhang123进行账号校验

Case 3. 指定其自动生成账号密码 ​
cmd
java -jar sa-quick-dist.jar --sa.auto=true
1

每次启动时随机生成账号密码(会在启动成功时打印到控制台上)

Case 4. 指定登录页的标题 ​
cmd
java -jar sa-quick-dist.jar --sa.title="XXX 系统登录"
1
Case 5. 关闭账号校验,仅作为静态资源部署使用 ​
cmd
java -jar sa-quick-dist.jar --sa.auth=false
1
Case 6. 指定启动端口(默认8080) ​
cmd
java -jar sa-quick-dist.jar --server.port=80
1

注:所有参数可组合使用

使用SpringBoot默认资源路径 ​

SpringBoot默认开放了一些路径作为资源目录,比如classpath:/static/, 怎么使用呢?我们只需要在jar包同目录创建一个\static文件夹,将静态资源文件复制到此目录下,然后启动jar包即可访问

同时,我们还可以在jar包同目录创建yml配置文件,来覆盖jar包内的yml配置,如下图所示:

sa-quick-case.png

例如如上目录中/static中有一个1.jpg文件,我们启动jar包后访问http://localhost:8080/1.jpg即可查看到此文件,这是Springboot自带的功能,在此不再赘述









发现错误? 您可以在 Gitee 或 GitHub 或 AtomGit 帮助我们完善此页文档! 或 加入讨论群 交流反馈。

我们坚信,即使再复杂的技术,也可以用清晰、干练、易懂的文字描述出它的具体细节,如果你在阅读文档时有难以理解的章节,那一定是我们还没有优化好它, 请向我们 反馈 你的困惑之处,我们将持续优化文档。


鲁ICP备18046274号-5|公安备案鲁公网安备37011202002956号
目录

本页无章节

推荐关闭
Sa-Token 商业版:轻松搭建 SSO 单点登录、OAuth2.0 统一认证、API Key 认证。全源码交付、可二开。
加入 Sa-Token 框架交流群

离线版文档历史所有版本文档Demo 示例大全下载

如果 Sa-Token 帮助到了你,希望你可以向同事、朋友推荐了解本框架,这对我们非常重要,感谢支持!

加油,工程师!