token代码演示

token代码演示

vue前端

1、页面组件

数据绑定——账号和密码

事件触发——登录

 <el-form-item prop="username">
            <el-input placeholder="请输入账号" prefix-icon="el-icon-user" size="medium" v-model="admin.username"></el-input>
          </el-form-item>
          <el-form-item prop="password">
            <el-input placeholder="请输入密码" show-password prefix-icon="el-icon-lock" size="medium" v-model="admin.password"  ></el-input>
          </el-form-item>
          <el-form-item>
            <el-button style="width: 100%" size="medium" type="primary" @keyup.enter="keyDown" @click="login"  >登录</el-button>
          </el-form-item>

2、Js

data
data() {
    return {
      loginAdmin: {},
      admin: {username : "junli" , password: "123456"},//设置默认的账号密码用于测试使用
    }
  }
点击”登录“的触发函数
login() {
      this.$refs['loginForm'].validate((valid) => {
        if (valid) {
          request.post('/admin/login', this.admin).then(res => {
            if (res.code === '200') {
              this.loginAdmin = res.data; 
              this.onSuccess();
            } else {
              this.$notify.error(res.msg)
            }
          })
        }
      })
    },

如下:此时loginAdmind已经从后端获取到数据。(控制台打印)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WBDaiACE-1685703375038)(C:\Users\沈礼谦\AppData\Roaming\Typora\typora-user-images\image-20230602180923653.png)]

Springboot后端

control层(调用adminService.login,把 ”实例login“ 返回给前端)

url:”/admin/login“

@ApiOperation("登录方法")
@PostMapping("/login")
public Result login(@RequestBody LoginRequest request) {
    LoginDTO login = adminService.login(request);
    return Result.success(login);
}
service层(验证账号密码,生成token,返回一个LoginDTO类的实例)
@Override
    public LoginDTO login(LoginRequest request) {
        Admin admin = null;
        
        try {
            admin = adminMapper.getByUsername(request.getUsername());
        } catch (Exception e) {
            log.error("根据用户名{} 查询出错", request.getUsername());
            throw new ServiceException("用户名错误");
        }
        
        if (admin == null) {
            throw new ServiceException("用户名或密码错误");
        }
        // 判断密码是否合法
        String securePass = securePass(request.getPassword());
        if (!securePass.equals(admin.getPassword())) {
            throw new ServiceException("用户名或密码错误");
        }
        
        LoginDTO loginDTO = new LoginDTO();
        BeanUtils.copyProperties(admin, loginDTO);

        // 生成token,设置token
        String token = TokenUtils.genToken(String.valueOf(admin.getId()), admin.getPassword());
        loginDTO.setToken(token);

        //生成登录记录
        SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        loginMapper.save(new Login(admin.getUsername()+"登录", sdf.format(System.currentTimeMillis())));
        return loginDTO;
    }

vue前端

  1. 设置一个叫“admin”的浏览器cookie用于跟踪用户的会话状态,其value值为 JSON.stringify(this.loginAdmin)
  2. 提示登录成功,页面跳转。
onSuccess() { // 登录成功后触发的
  Cookies.set('admin', JSON.stringify(this.loginAdmin))
  this.$notify.success("登录成功")
  this.$router.push('/')
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,我可以提供一个简单的示例代码演示如何在Spring Boot中获取JWT令牌。在这个示例中,我们将使用jjwt库来生成和验证JWT令牌。 首先,我们需要添加jjwt库的依赖。在pom.xml文件中添加以下代码: ```xml <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-api</artifactId> <version>0.11.2</version> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-impl</artifactId> <version>0.11.2</version> <scope>runtime</scope> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-gson</artifactId> <version>0.11.2</version> <scope>runtime</scope> </dependency> ``` 接下来,我们可以创建一个JwtUtil工具类来处理JWT令牌的生成和验证。在这个类中,我们将包含以下方法: ```java import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import org.springframework.stereotype.Component; import java.util.Date; @Component public class JwtUtil { private static final String SECRET_KEY = "yourSecretKey"; private static final long EXPIRATION_TIME = 86400000; // 24小时 public String generateToken(String username) { Date now = new Date(); Date expiryDate = new Date(now.getTime() + EXPIRATION_TIME); return Jwts.builder() .setSubject(username) .setIssuedAt(now) .setExpiration(expiryDate) .signWith(SignatureAlgorithm.HS512, SECRET_KEY) .compact(); } public String getUsernameFromToken(String token) { Claims claims = Jwts.parser() .setSigningKey(SECRET_KEY) .parseClaimsJws(token) .getBody(); return claims.getSubject(); } public boolean validateToken(String token) { try { Jwts.parser().setSigningKey(SECRET_KEY).parseClaimsJws(token); return true; } catch (Exception e) { return false; } } } ``` 在上述代码中,`generateToken`方法用于生成JWT令牌,`getUsernameFromToken`方法用于从令牌中获取用户名,`validateToken`方法用于验证令牌的有效性。 现在,我们可以在Spring Boot的控制器中使用JwtUtil来获取JWT令牌。例如: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @RestController public class AuthController { @Autowired private JwtUtil jwtUtil; @PostMapping("/login") public ResponseEntity<?> login(@RequestBody LoginRequest request) { // 假设这里进行了用户名和密码的验证 // 生成JWT令牌 String token = jwtUtil.generateToken(request.getUsername()); return ResponseEntity.ok(new LoginResponse(token)); } } ``` 在上述代码中,我们使用`login`方法来处理登录请求,并在验证用户名和密码后生成JWT令牌。 这只是一个简单的示例,你可以根据你的实际需求进行更复杂的配置和验证。希望这个示例能帮到你!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值