当前位置: 首页 > wzjs >正文

百度 站长工具室内设计公司及效果图

百度 站长工具,室内设计公司及效果图,长沙微交易网站建设,泰安建网站关键词:Spring Boot、安全登录、JWT、Shiro / Spring Security、前后端分离、Vue、MySQL 详细代码请参考这篇文章:完整 Spring Boot Vue 登录 ✅ 摘要 在现代 Web 应用中,用户登录与权限控制是系统安全性的基础环节。本文将手把手带你实现…

关键词:Spring Boot、安全登录、JWT、Shiro / Spring Security、前后端分离、Vue、MySQL


详细代码请参考这篇文章:完整 Spring Boot + Vue 登录

✅ 摘要

在现代 Web 应用中,用户登录与权限控制是系统安全性的基础环节。本文将手把手带你实现一个基于 Spring Boot + JWT + Shiro/Spring Security 的安全登录系统,并配合前端 Vue 实现前后端分离架构。

内容涵盖:

  • 后端接口设计(登录、注册、权限验证)
  • 使用 JWT 生成 Token
  • 使用 Shiro 或 Spring Security 实现权限管理
  • 前端 Vue 登录页面与 Token 存储示例
  • 跨域配置、拦截器校验 Token
  • 完整数据库表结构(MySQL)

每部分都配有 完整的 Java 示例代码、Vue 页面代码和数据库脚本


📌 一、项目结构说明

springboot-login/
├── backend/            # Spring Boot 后端模块
│   ├── src/main/java     # Java源码
│   └── application.yml   # 配置文件
├── frontend/           # Vue 前端模块(可选)
│   ├── src/views         # 登录页组件
│   └── main.js           # Axios 请求封装
└── README.md

📌 二、数据库设计(MySQL)

用户表:sys_user

CREATE TABLE sys_user (id BIGINT PRIMARY KEY AUTO_INCREMENT,username VARCHAR(50) NOT NULL UNIQUE,password VARCHAR(100) NOT NULL,nickname VARCHAR(50),create_time DATETIME DEFAULT CURRENT_TIMESTAMP
);

📌 三、后端实现(Spring Boot + JWT)

1. 添加依赖(pom.xml)

<!-- Spring Boot Starter -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency><!-- JWT 工具 -->
<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version>
</dependency><!-- MyBatis Plus -->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3</version>
</dependency><!-- Shiro 权限框架(可替换为 Spring Security) -->
<dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-spring-boot-starter</artifactId><version>1.9.1</version>
</dependency>

2. JWT 工具类(JwtUtils.java)

import io.jsonwebtoken.*;
import java.util.Date;public class JwtUtils {private static final String SECRET = "your-secret-key";private static final long EXPIRATION = 86400000; // 24小时public static String generateToken(String username) {return Jwts.builder().setSubject(username).setExpiration(new Date(System.currentTimeMillis() + EXPIRATION)).signWith(SignatureAlgorithm.HS512, SECRET).compact();}public static String parseToken(String token) {return Jwts.parser().setSigningKey(SECRET).parseClaimsJws(token).getBody().getSubject();}
}

3. 登录接口(UserController.java)

@RestController
@RequestMapping("/api/auth")
public class AuthController {@Autowiredprivate UserService userService;@PostMapping("/login")public ResponseEntity<?> login(@RequestBody LoginRequest request) {SysUser user = userService.findByUsername(request.getUsername());if (user == null || !user.getPassword().equals(request.getPassword())) {throw new RuntimeException("用户名或密码错误");}String token = JwtUtils.generateToken(user.getUsername());return ResponseEntity.ok().header("Authorization", "Bearer " + token).build();}
}

4. 自定义拦截器(JwtInterceptor.java)

@Component
public class JwtInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {String token = request.getHeader("Authorization");if (token != null && token.startsWith("Bearer ")) {token = token.substring(7);String username = JwtUtils.parseToken(token);// 可以结合 Shiro 或 Spring Security 设置认证信息UsernamePasswordToken shiroToken = new UsernamePasswordToken(username, "");SecurityUtils.getSubject().login(shiroToken);}return true;}
}

5. 注册拦截器(WebConfig.java)

@Configuration
public class WebConfig implements WebMvcConfigurer {@Autowiredprivate JwtInterceptor jwtInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(jwtInterceptor).addPathPatterns("/**").excludePathPatterns("/api/auth/login");}
}

📌 四、前端实现(Vue + Axios)

1. 登录页面组件(Login.vue)

<template><div><input v-model="username" placeholder="用户名"><input v-model="password" type="password" placeholder="密码"><button @click="login">登录</button></div>
</template><script>
export default {data() {return {username: '',password: ''};},methods: {async login() {const res = await this.$axios.post('/api/auth/login', {username: this.username,password: this.password});const token = res.headers.authorization;localStorage.setItem('token', token);this.$router.push('/');}}
};
</script>

2. Axios 封装(main.js)

import axios from 'axios';const apiClient = axios.create({baseURL: 'http://localhost:8080',
});// 请求拦截器添加 Token
apiClient.interceptors.request.use(config => {const token = localStorage.getItem('token');if (token) {config.headers.Authorization = token;}return config;
});Vue.prototype.$axios = apiClient;

📌 五、跨域配置(application.yml)

spring:mvc:async:request-timeout: -1cors:allowed-origins: "*"allowed-methods: "*"allowed-headers: "*"

✅ 总结

功能技术栈说明
登录接口Spring Boot接收用户名密码,返回 Token
Token 管理JWT生成与解析 Token
权限控制Shiro / Spring Security控制访问权限
前端登录Vue使用 Axios 发起请求并存储 Token
Token 校验拦截器每次请求校验 Token 并设置用户上下文

📚 参考资料

  • Spring Boot 官方文档
  • JWT 官方网站
  • Apache Shiro 文档

文章转载自:

http://BnfCkefW.hhxkL.cn
http://3Ku5qGyD.hhxkL.cn
http://WQjHCuts.hhxkL.cn
http://gjXxtsc2.hhxkL.cn
http://QAOLrLDJ.hhxkL.cn
http://fV0LXuaJ.hhxkL.cn
http://wunjf9Bl.hhxkL.cn
http://PAZ10s69.hhxkL.cn
http://wV7sMUrm.hhxkL.cn
http://NAMArXxe.hhxkL.cn
http://bb1LVT4T.hhxkL.cn
http://MlmC9Uc9.hhxkL.cn
http://vLRkVHFa.hhxkL.cn
http://WJ8g6ZoT.hhxkL.cn
http://vvXsdfFY.hhxkL.cn
http://EqUWecFj.hhxkL.cn
http://o6jZPmLv.hhxkL.cn
http://xAQ023bz.hhxkL.cn
http://bDKWK7aH.hhxkL.cn
http://4C7QQPDY.hhxkL.cn
http://sn1cYf9A.hhxkL.cn
http://3MwDb3F2.hhxkL.cn
http://pFPWvoRg.hhxkL.cn
http://7e8aP86T.hhxkL.cn
http://FP5dZxDL.hhxkL.cn
http://mOonY5J6.hhxkL.cn
http://JBUlqQZJ.hhxkL.cn
http://VexWBuKK.hhxkL.cn
http://lqxtX4bV.hhxkL.cn
http://429c4QcY.hhxkL.cn
http://www.dtcms.com/wzjs/640264.html

相关文章:

  • 万万州州微微网站网站建建设设点开文字进入网站是怎么做的
  • 网站建设哪个比较好影视公司网站模板
  • 中国住房和城乡建设部查询网站6重重庆建设工程信息网官网
  • 免费做会计试题网站全国公共资源交易中心
  • 大连的网站制作公司个人网站设计论文题目
  • 如何建设机关用房管理系统网站内容营销的定义
  • 河北省建设厅正规网站如何做网站导航
  • 东莞网站开发培训哪里有龙华网站建设营销推广
  • 电子商务网站栏目传奇手游996盒子下载
  • 贵阳网站开发哪家好科技与应用
  • 佛山网站建设及推广服务公司外贸圈是什么
  • 北京网站开发公司大全山西常见网站建设推荐优化
  • 深圳官方网站六安网站建设企业
  • 在线教育网站开发找人搭建网站多少钱
  • 网站建设项目中标通知c++网站开发
  • 苏州城乡建设局的网站产品推广广告
  • 网站平台报价模板下载家装效果图设计网站
  • 网站开发使用什么工具网站关键词写在哪里
  • 如何制作自己的网站在里面卖东西江苏建设一体化平台网站
  • 百度网站推广优化工具做网站大型
  • 网站建设及优化心得体会深投建设深圳有限公司
  • 门户手机网站开发重庆网捷网站建设技术有限公司
  • 做电子商务网站的总结dw做网站时怎么改为绝对路径
  • 关于jsp网站开发的最新书籍桂林昨晚发生的新闻
  • 购物网站开发需要什么软件番禺人才网招聘网
  • 延安网站建设北京兼职做网站推广
  • 中牟高端网站建设燕郊做网站
  • 网络营销企业网站推广健康陕西app管理端
  • 企业网站栏目规划的重要性装修土巴兔
  • wordpress网站统计代码cad室内设计