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

制作网页第一件事就是选定一种莱芜网站优化怎么做

制作网页第一件事就是选定一种,莱芜网站优化怎么做,塘下网站建设,济南迅翔网站建设项目名称:springboot-vue-login-template✅ 功能一览模块功能后端Spring Boot MyBatis Plus JWT Shiro数据库MySQL 用户表前端Vue3 Element Plus Axios登录流程用户名/密码验证 → 返回 Token → 存储 LocalStorage权限控制拦截器校验 Token Shiro 角色权限跨…

项目名称:springboot-vue-login-template


✅ 功能一览

模块功能
后端Spring Boot + MyBatis Plus + JWT + Shiro
数据库MySQL 用户表
前端Vue3 + Element Plus + Axios
登录流程用户名/密码验证 → 返回 Token → 存储 LocalStorage
权限控制拦截器校验 Token + Shiro 角色权限
跨域配置后端支持跨域请求
接口安全所有接口需携带 Token 访问

📁 项目结构概览

springboot-vue-login-template/
├── backend/             # Spring Boot 后端模块
│   ├── src/main/java      # Java源码
│   ├── src/main/resources # 配置文件
│   └── pom.xml            # Maven依赖管理
├── frontend/            # Vue3 前端模块
│   ├── public/
│   ├── src/
│   │   ├── views/         # 页面组件
│   │   ├── utils/         # 工具类
│   │   └── main.js        # 入口文件
│   └── package.json       # 依赖管理
└── README.md              # 项目说明文档

🧱 数据库脚本(MySQL)

CREATE DATABASE springboot_login;USE springboot_login;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
);-- 示例用户(密码为123456)
INSERT INTO sys_user (username, password, nickname)
VALUES ('admin', '$2a$10$eACCYoNOHEzWZhE8Cwe6gOXEpTLExV6l', '管理员');

🚀 后端代码(Spring Boot)

1. application.yml

server:port: 8080spring:datasource:url: jdbc:mysql://localhost:3306/springboot_login?useSSL=false&serverTimezone=UTCusername: rootpassword: yourpassworddriver-class-name: com.mysql.cj.jdbc.Drivermybatis-plus:mapper-locations: classpath:/mapper/*.xml

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. 登录接口 AuthController.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);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");}
}

🖥️ 前端代码(Vue3 + Element Plus)

1. 安装依赖

npm install axios element-plus

2. 登录页面组件 Login.vue

<template><div style="max-width: 400px; margin: 100px auto;"><h2>登录</h2><el-input v-model="username" placeholder="用户名"></el-input><el-input v-model="password" type="password" placeholder="密码" @keyup.enter.native="login"></el-input><el-button @click="login" type="primary">登录</el-button></div>
</template><script setup>
import { ref } from 'vue';
import { useRouter } from 'vue-router';
import axios from 'axios';const router = useRouter();
const username = ref('');
const password = ref('');const login = async () => {try {const res = await axios.post('http://localhost:8080/api/auth/login', {username: username.value,password: password.value});const token = res.headers.authorization;localStorage.setItem('token', token);router.push('/home');} catch (error) {alert('登录失败');}
};
</script>

3. Axios 请求封装 utils/request.js

import axios from 'axios';const service = axios.create({baseURL: 'http://localhost:8080',timeout: 5000
});service.interceptors.request.use(config => {const token = localStorage.getItem('token');if (token) {config.headers.Authorization = token;}return config;
});export default service;

📝 项目启动说明(README.md)

# Spring Boot + Vue 登录系统模板## 后端启动1. 创建数据库并导入数据
2. 修改 `application.yml` 中的数据库配置
3. 使用 IDEA 或命令行运行 Spring Boot 项目:```bash
cd backend
mvn spring-boot:run

前端启动

cd frontend
npm install
npm run serve

访问 http://localhost:8081

http://www.dtcms.com/wzjs/545403.html

相关文章:

  • 宿迁市建设局网站首页建网站可行性分析
  • 网站建设质量保证网站建设及维护干什么的
  • asp网站表格代码建网站的步骤是哪些
  • 昆明网站seo服务进入官网登录页面
  • 个人网站备案做论坛怎样做自己的微商网站
  • 企业宣传网站建设内容企业网站设计与实现
  • ae模板下载网站推荐手机小程序制作
  • 广州网站建设企业建设工程设计备案网站
  • 企业网站优化怎么做常用seo站长工具
  • 郑州网站建设 app开发品牌营销网站建设流程
  • ppt模板网站排行榜wordpress后台 插件
  • 安徽城乡建设厅官方网站网站界面用什么软件做
  • 建立网站要怎么做响应式网站和
  • 东莞企业网站价格传媒网站建设公司
  • 网站建设实习任务完成情况国内设计公司前十名
  • 保定网站制作软件平面设计大师
  • 网站建设与组织管理访问的网页正在升级中
  • 用网站开发客户发邮件动漫设计与制作是做什么的
  • pc网站优化排名十大网站建设排名
  • 如何查询一个网站的icp南宁市网上注册公司流程
  • 新建的网站多长时间在百度搜到中国招标投标服务平台官网
  • 外贸网站cms做网站流量
  • 一般做网站用什么字体谷歌外贸网站建站
  • 天津市建设安全协会网站杭州建电商网站多少钱
  • 网站流量查询 优帮云wordpress主题和预览不同
  • 建网站需要哪些条件无锡网站排名优化公司
  • 企业门户网站制作教程域名检测工具
  • 巫溪集团网站建设阳泉做网站
  • 帮企业做网站网页上上传wordpress
  • 做网站是怎么赚钱的动易网站无法安装