1
0
mirror of synced 2026-05-22 22:53:16 +00:00
Files
Sa-Token/sa-token-doc/plugin/quick-login.md
T

269 lines
8.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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依赖
<!---------------------------- tabs:start ------------------------------>
<!-------- tab:Maven 方式 -------->
``` xml
<!-- Sa-Token-Quick-Login 插件 -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-quick-login</artifactId>
<version>${sa.top.version}</version>
</dependency>
```
<!-------- tab:Gradle 方式 -------->
``` gradle
// Sa-Token-Quick-Login 插件
implementation 'cn.dev33:sa-token-quick-login:${sa.top.version}'
```
<!---------------------------- tabs:end ------------------------------>
##### 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());
}
}
```
##### 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;
}
}
```
### 测试访问
启动项目,使用浏览器访问:`http://localhost:8081`,首次访问时,由于处于未登录状态,会被强制进入登录页面
![登录](https://oss.dev33.cn/sa-token/doc/sa-quick-login.png 's-w')
使用默认账号:`sa / 123456`进行登录,会看到资源页面
![登录](https://oss.dev33.cn/sa-token/doc/sa-quick-login-index.png 's-w')
### 可配置信息
你可以在yml中添加如下配置 (所有配置都是可选的)
<!---------------------------- tabs:start ---------------------------->
<!------------- tab:yaml 风格 ------------->
``` 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
```
<!------------- tab:properties 风格 ------------->
``` properties
####### Sa-Token-Quick-Login 配置 #######
# 登录账号
sa.name=sa
# 登录密码
sa.pwd=123456
# 是否自动随机生成账号密码 (此项为true时, name与pwd失效)
sa.auto=false
# 是否开启全局认证(关闭后将不再强行拦截)
sa.auth=true
# 登录页标题
sa.title=Sa-Token 登录
# 是否显示底部版权信息
sa.copr=true
# 指定拦截路径
# sa.include=/**
# 指定排除路径
# sa.exclude=/1.jpg
```
<!---------------------------- tabs:end ---------------------------->
<br>
**注:**示例源码在`/sa-token-demo/sa-token-demo-quick-login`目录下,可结合源码查看学习
### 使用独立jar包运行
使用`sa-token-quick-login`只需引入一个依赖即可为系统注入登录模块,现在我们更进一步,将这个项目打成一个独立的jar包
通过这个jar包,我们可以方便的部署任意静态网站!做到真正的零编码注入登录功能。
##### 打包步骤
首先放上懒人链接:[sa-quick-dist.jar](https://gitee.com/dromara/sa-token/attach_files/695353/download) ,不想手动操作的同学可以直接点此链接下载打包后的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>
```
2、在项目根目录进入cmd执行打包命令
``` cmd
mvn clean package
```
3、进入`\sa-token-demo\sa-token-demo-quick-login\target` 文件夹,找到打包好的jar文件
``` cmd
sa-token-demo-quick-login-0.0.1-SNAPSHOT.jar
```
4、我们将其重命名为`sa-quick-dist.jar`,现在这个jar包就是我们的最终程序,我们在这个`\target`目录直接进入cmd,执行如下命令启动jar包
``` cmd
java -jar sa-quick-dist.jar
```
5、测试访问,根据控制台输出提示,我们使用浏览器访问测试: `http://localhost:8080`
![sa-quick-start](https://oss.dev33.cn/sa-token/doc/sa-quick-start.png 's-w')
如果可以进入登录界面,则代表打包运行成功 <br>
当然仅仅运行成功还不够,下面我们演示一下如何使用这个jar包进行静态网站部署
### 所有功能示例
##### Case 1. 指定静态资源路径
``` cmd
java -jar sa-quick-dist.jar --sa.dir file:E:\www
```
使用dir参数指定`E:\www`目录作为资源目录进行部署 (现在我们可以通过浏览器访问`E:\www`目录下的文件了!)
##### Case 2. 指定登录名与密码
``` cmd
java -jar sa-quick-dist.jar --sa.name=zhang --sa.pwd=zhang123
```
现在,默认的账号`sa/123456`将被废弃,而是使用`zhang/zhang123`进行账号校验
##### Case 3. 指定其自动生成账号密码
``` cmd
java -jar sa-quick-dist.jar --sa.auto=true
```
每次启动时随机生成账号密码(会在启动成功时打印到控制台上)
##### Case 4. 指定登录页的标题
``` cmd
java -jar sa-quick-dist.jar --sa.title="XXX 系统登录"
```
##### Case 5. 关闭账号校验,仅作为静态资源部署使用
``` cmd
java -jar sa-quick-dist.jar --sa.auth=false
```
##### Case 6. 指定启动端口(默认8080)
``` cmd
java -jar sa-quick-dist.jar --server.port=80
```
注:所有参数可组合使用
### 使用SpringBoot默认资源路径
SpringBoot默认开放了一些路径作为资源目录,比如`classpath:/static/`
怎么使用呢?我们只需要在jar包同目录创建一个`\static`文件夹,将静态资源文件复制到此目录下,然后启动jar包即可访问
同时,我们还可以在jar包同目录创建yml配置文件,来覆盖jar包内的yml配置,如下图所示:
![sa-quick-case.png](https://oss.dev33.cn/sa-token/doc/sa-quick-case.png 's-w')
例如如上目录中`/static`中有一个`1.jpg`文件,我们启动jar包后访问`http://localhost:8080/1.jpg`即可查看到此文件,这是Springboot自带的功能,在此不再赘述