session和token node(express)+vue

session和token

1.node所需session的插件和配置

cookie-parser -S
express-session -S
  • 下载后然后在app.js引入插件

  • 接着配置session的基本信息 储存时长

//设置 session中间件   --- 必须写在路由中间件前面  用来保存用户登陆后的数据 
app.use(session({
   
  name: "AppTest",
  cookie: {
    maxTime: 1000 * 60 * 24 },  //设置 session时长为一天
  secret: "test",
  resave: false,
  saveUninitialized: true //是否进行非初始化保存
}))

2.用户登陆成功后

  • 用户登陆成功后 后端通过(加密)数据返回一个token给前端,前端拿到后存到本地的sessionStorage

  • 后端把登陆成功的用户信息和token存到session,以便后面前端每一次请求发送的token和后端存进的用户token来判断用户的登录状态 见:例子1

3…前端token的发送

  • 然后在axios的封装里面设置请求头带上token
    ##设置请求头
//在封装的axios里面设置请求头,让请求带上token发送到服务器
//设置请求头里面的token  
let token = ""
axios.defaults.headers.common['token'] = token;
//设置提交文档类型的编码
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
  • 接着设置token ,在请求拦截器里面获取本地存进去的token

                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 Spring Boot 和 Vue.js 实现 token 验证的步骤如下: 1. 在 Spring Boot 后端实现 token 的生成和验证逻辑。 创建一个 TokenUtil 类,用于生成和验证 token。可以使用 Java JWT(jjwt)库来简化操作。 ```java import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.security.Keys; import org.springframework.stereotype.Component; import javax.crypto.SecretKey; import java.util.Date; @Component public class TokenUtil { private static final String SECRET_KEY = "your_secret_key_here"; private static final long EXPIRATION_TIME = 86400000; // 过期时间设置为一天 // 生成 token public String generateToken(String userId) { SecretKey key = Keys.hmacShaKeyFor(SECRET_KEY.getBytes()); return Jwts.builder() .setSubject(userId) .setExpiration(new Date(System.currentTimeMillis() + EXPIRATION_TIME)) .signWith(key) .compact(); } // 验证 token public boolean validateToken(String token) { try { SecretKey key = Keys.hmacShaKeyFor(SECRET_KEY.getBytes()); Jwts.parserBuilder().setSigningKey(key).build().parseClaimsJws(token); return true; } catch (Exception e) { return false; } } // 获取 token 的用户ID public String getUserIdFromToken(String token) { SecretKey key = Keys.hmacShaKeyFor(SECRET_KEY.getBytes()); Claims claims = Jwts.parserBuilder().setSigningKey(key).build().parseClaimsJws(token).getBody(); return claims.getSubject(); } } ``` 2. 在 Spring Boot 的控制器添加 token 相关的接口。 创建一个 UserController 类,用于处理用户相关的请求。 ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/api") public class UserController { @Autowired private TokenUtil tokenUtil; @PostMapping("/login") public String login(@RequestBody User user) { // 验证用户登录逻辑,验证通过后生成 token if (authenticate(user.getUsername(), user.getPassword())) { String token = tokenUtil.generateToken(user.getUsername()); return token; } else { return "Invalid credentials"; } } @GetMapping("/user") public String getUserInfo(@RequestHeader("Authorization") String token) { // 验证 token 的有效性,并返回用户信息 if (tokenUtil.validateToken(token)) { String userId = tokenUtil.getUserIdFromToken(token); // 根据 userId 获取用户信息并返回 return "User: " + userId; } else { return "Invalid token"; } } private boolean authenticate(String username, String password) { // 用户登录验证逻辑 // 返回 true 表示验证通过,返回 false 表示验证失败 // 这里只做演示,实际情况需要根据实际业务逻辑进行验证 return username.equals("admin") && password.equals("password"); } } ``` 3. 在 Vue.js 前端发送登录请求,并使用获取到的 token 发送其他请求。 使用 axios 发送登录请求,并将获取到的 token 存储到浏览器的 localStorage 。 ```javascript import axios from 'axios' const login = (username, password) => { return axios.post('/api/login', { username, password }) .then(response => { const token = response.data localStorage.setItem('token', token) }) } ``` 在其他需要验证身份的请求,将存储的 token 添加到请求的头部 Authorization 。 ```javascript import axios from 'axios' const getUserInfo = () => { const token = localStorage.getItem('token') const config = { headers: { 'Authorization': token } } return axios.get('/api/user', config) .then(response => { const userInfo = response.data return userInfo }) } ``` 这样,在发送请求时,后端会验证传递的 token 的有效性,并根据需要执行相应的逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值