springboot以以FTP方式上传文件到远程服务器的流程方式上传文件到远程服务器的流程
本文给大家介绍jwt登录认证及鉴权的流程,对springboot ftp上传文件到远程服务器的相关知识感兴趣的朋友一
起看看吧
通过笔者前两篇文章的说明,相信大家已经知道JWT是什么,怎么用,该如何结合Spring Security使用。那么本节就用代码来
具体的实现一下JWT登录认证及鉴权的流程。
一、环境准备工作一、环境准备工作
建立Spring Boot项目并集成了Spring Security,项目可以正常启动
通过controller写一个HTTP的GET方法服务接口,比如:“/hello”
实现最基本的动态数据验证及权限分配,即实现UserDetailsService接口和UserDetails接口。这两个接口都是向Spring
Security提供用户、角色、权限等校验信息的接口
如果你学习过Spring Security的formLogin登录模式,请将HttpSecurity配置中的formLogin()配置段全部去掉。因为JWT完全使
用JSON接口,没有from表单提交。
HttpSecurity配置中一定要加上csrf().disable(),即暂时关掉跨站攻击CSRF的防御。这样是不安全的,我们后续章节再做处理。
以上的内容,我们在之前的文章中都已经讲过。如果仍然不熟悉,可以翻看本号之前的文章。
## 二、开发二、开发JWT工具类工具类
通过maven坐标引入JWT工具包jjwt
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.0</version>
</dependency>
在application.yml中加入如下自定义一些关于JWT的配置
jwt:
header: JWTHeaderName
secret: aabbccdd
expiration: 3600000
其中header是携带JWT令牌的HTTP的Header的名称。虽然我这里叫做JWTHeaderName,但是在实际生产中可读性越差越
安全。
secret是用来为JWT基础信息加密和解密的密钥。虽然我在这里在配置文件写死了,但是在实际生产中通常不直接写在配置文
件里面。而是通过应用的启动参数传递,并且需要定期修改。
expiration是JWT令牌的有效时间。
写一个Spring Boot配置自动加载的工具类。
@Data
@ConfigurationProperties(prefix = "jwt") //配置自动加载,prefix是配置的前缀
@Component
public class JwtTokenUtil implements Serializable {
private String secret;
private Long expiration;
private String header;
/**
* 生成token令牌
*
* @param userDetails 用户
* @return 令token牌
*/
public String generateToken(UserDetails userDetails) {
Map<String, Object> claims = new HashMap<>(2);
claims.put("sub", userDetails.getUsername());
claims.put("created", new Date());
return generateToken(claims);
}
/**
* 从令牌中获取用户名
*
* @param token 令牌
* @return 用户名
评论0