TypechoJoeTheme

至尊技术网

统计
登录
用户名
密码

Vue3整合SpringSecurity与JWT实现登录认证

2025-07-03
/
0 评论
/
4 阅读
/
正在检测是否收录...
07/03

Vue 3 整合 Spring Security 与 JWT 实现登录认证

在构建现代web应用时,安全性是一个不可忽视的方面。特别是当使用单页应用(SPA)如Vue 3时,传统的session管理方式不再适用,因此使用JSON Web Tokens(JWT)配合Spring Security进行认证和授权成为了流行的选择。本文将详细介绍如何整合Vue 3与Spring Security和JWT来处理登录认证的流程。

1. 概述

  • Vue 3: 是一个现代JavaScript框架,用于构建用户界面。
  • Spring Security: 是一个提供安全性的框架,用于保护Web应用程序免受攻击。
  • JWT (JSON Web Tokens): 是一种开放标准(RFC 7519),用于双方之间安全地传输信息。它通常用于身份验证和信息交换。

2. 搭建Spring Boot项目并集成Spring Security和JWT

首先,你需要创建一个Spring Boot项目并添加以下依赖:

xml <!-- Spring Boot Starter Security --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <!-- JWT Support --> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-api</artifactId> <version>0.11.5</version> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-impl</artifactId> <version>0.11.5</version> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-jackson</artifactId> <version>0.11.5</version> </dependency>

3. 配置Spring Security和JWT

接下来,配置Spring Security来使用JWT:

```java
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private JwtTokenProvider jwtTokenProvider; // 自定义的JWT工具类,负责生成和验证JWTs。

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.csrf().disable() // Disabling CSRF since we are using JWTs for security.
        .authorizeRequests() // 设置权限规则。
        .antMatchers("/api/authenticate").permitAll() // 允许任何请求访问 /api/authenticate 路径。
        .anyRequest().authenticated() // 所有其他请求都需要认证。
        .and() 
        .sessionManagement() // 管理会话,由于使用了JWT,我们不需要session。
        .sessionCreationPolicy(SessionCreationPolicy.STATELESS); // 设置Session为无状态。  
    http.addFilterBefore(new JwtTokenFilter(), UsernamePasswordAuthenticationFilter.class); // 在UsernamePasswordAuthenticationFilter之前添加JwtTokenFilter。  
}  

}
```

4. 创建JWT工具类和服务层APIs(REST Controllers)

为了生成和验证JWTs,你可以创建一个工具类和一个服务层API:
java // JwtTokenProvider.java public class JwtTokenProvider { // 方法来生成JWTs public String generateToken(String username) { return Jwts.builder() .setSubject(username) .setExpiration(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 10)) // 设置token有效期为10小时 .signWith(SignatureAlgorithm.HS256, "secret") // 使用HS256算法和一个密钥进行签名 .compact(); } // 方法来验证JWTs public Claims validateToken(String token) { return Jwts.parser() .setSigningKey("secret") .parseClaimsJws(token) .getBody(); } } #### 5. Vue 3前端实现登录逻辑 在Vue 3中,你可以使用Axios来发送HTTP请求与后端进行交互: javascript // 使用Axios发送POST请求到/api/authenticate以获取JWT async function login(username, password) { const response = await axios.post('http://localhost:8080/api/authenticate', { username: username, password: password }); if (response.data && response.data.token) { const token = response.data.token; localStorage.setItem('jwtToken', token); // 将token存储在localStorage中以便后续请求使用 } else { console.error('登录失败:', response); } }

朗读
赞(0)
版权属于:

至尊技术网

本文链接:

https://www.zzwws.cn/archives/31663/(转载时请注明本文出处及文章链接)

评论 (0)

人生倒计时

今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月

最新回复

  1. 强强强
    2025-04-07
  2. jesse
    2025-01-16
  3. sowxkkxwwk
    2024-11-20
  4. zpzscldkea
    2024-11-20
  5. bruvoaaiju
    2024-11-14

标签云