Browse Source

登录校验

dev
Administrator 1 month ago
parent
commit
4830f4a8c8
  1. 6
      pom.xml
  2. 2
      src/main/java/org/hlrj/duobao_demo/DuobaoDemoApplication.java
  3. 16
      src/main/java/org/hlrj/duobao_demo/controller/LoginController.java
  4. 2
      src/main/java/org/hlrj/duobao_demo/entity/User.java
  5. 34
      src/main/java/org/hlrj/duobao_demo/tool/DomoFilter.java
  6. 46
      src/main/java/org/hlrj/duobao_demo/tool/JwtUtils.java
  7. 2
      src/main/java/org/hlrj/duobao_demo/tool/Result.java
  8. 2
      src/main/resources/mapper/UserMapper.xml
  9. 13
      src/test/java/com/example/demo/Demo2ApplicationTests.java
  10. 20
      src/test/java/org/hlrj/duobao_demo/DuobaoDemoApplicationTests.java

6
pom.xml

@ -64,6 +64,12 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--JWT相关依赖-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>

2
src/main/java/org/hlrj/duobao_demo/DuobaoDemoApplication.java

@ -4,10 +4,12 @@ import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.cache.annotation.EnableCaching;
@SpringBootApplication
@EnableCaching
@ServletComponentScan
@MapperScan("org.hlrj.duobao_demo.mapper")
public class DuobaoDemoApplication {

16
src/main/java/org/hlrj/duobao_demo/controller/LoginController.java

@ -3,12 +3,17 @@ package org.hlrj.duobao_demo.controller;
import lombok.extern.slf4j.Slf4j;
import org.hlrj.duobao_demo.entity.User;
import org.hlrj.duobao_demo.service.IUserService;
import org.hlrj.duobao_demo.tool.JwtUtils;
import org.hlrj.duobao_demo.tool.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
/**
* @program: duobao_demo
* @ClassName LoginController
@ -29,9 +34,14 @@ public class LoginController {
log.info("登录操作:{}",user);
User user1 = userService.login(user);
if (user1 != null) {
return Result.error("用户名或者密码错误");
}else {
return Result.success("登录成功");
Map<String, Object> map = new HashMap<>();
map.put("userid",user1.getUserid());
map.put("username",user1.getUsername());
map.put("createTime",user1.getCreateTime());
//生成jwt令牌
String jwt = JwtUtils.generateJwt(map);
return Result.success(jwt);
}
return Result.error("用户名或者密码错误");
}
}

2
src/main/java/org/hlrj/duobao_demo/entity/User.java

@ -39,7 +39,7 @@ public class User implements Serializable {
private String password;
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
private java.util.Date createTime;
}

34
src/main/java/org/hlrj/duobao_demo/tool/DomoFilter.java

@ -0,0 +1,34 @@
package org.hlrj.duobao_demo.tool;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
/**
* @program: duobao_demo
* @ClassName DomoFilter
* @description:
* @author:liuyusong
* @create: 202504-14 15:43
* @Version 1.0
**/
@WebFilter(urlPatterns="/*")
public class DomoFilter implements Filter {
@Override//初始化方法只调用一次
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("init,初始化方法执行了");
}
@Override//拦截到请求之后调用调用多次
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
filterChain.doFilter(servletRequest, servletResponse);
}
@Override//销毁方法只能调用一次
public void destroy() {
System.out.println("destroy 销毁方法执行了");
}
}

46
src/main/java/org/hlrj/duobao_demo/tool/JwtUtils.java

@ -0,0 +1,46 @@
package org.hlrj.duobao_demo.tool;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.Map;
/**
* @program: duobao_demo
* @ClassName JwtUtils
* @description:
* @author:liuyusong
* @create: 202504-14 14:38
* @Version 1.0
**/
public class JwtUtils {
private static String singKey="hongli";//签名密钥
private static Long expire = 30*60*1000L;//设置过期时间为半小时
/**
* 生成JWT令牌
* @param claims
* @return
*/
public static String generateJwt(Map<String, Object> claims){
String jwt = Jwts.builder()
.addClaims(claims)
.signWith(SignatureAlgorithm.HS256,singKey)
.setExpiration(new Date(System.currentTimeMillis()+expire))
.compact();
return jwt;
}
public static Claims parseJwt(String jwt){
Claims claims = Jwts.parser()
.setSigningKey(singKey)
.parseClaimsJws(jwt)
.getBody();
return claims;
}
}

2
src/main/java/org/hlrj/duobao_demo/tool/Result.java

@ -29,7 +29,7 @@ public class Result {
return new Result(200, "success", data);
}
public static Result success(String msg) {
return new Result(400,"msg",null);
return new Result(200,"msg",msg);
}
public static Result error(String msg) {return new Result(400,"msg",msg);}
}

2
src/main/resources/mapper/UserMapper.xml

@ -16,7 +16,7 @@
password,
createTime
FROM
users
user
WHERE
username = #{username}
AND

13
src/test/java/com/example/demo/Demo2ApplicationTests.java

@ -1,13 +0,0 @@
package com.example.demo;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class Demo2ApplicationTests {
@Test
void contextLoads() {
}
}

20
src/test/java/org/hlrj/duobao_demo/DuobaoDemoApplicationTests.java

@ -1,13 +1,33 @@
package org.hlrj.duobao_demo;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@SpringBootTest
class DuobaoDemoApplicationTests {
@Test
void contextLoads() {
}
/* @Test
public void testGenJwt(){
Map<String,Object> map=new HashMap<>();
map.put("id",1);
map.put("name","liuyusong");
String jwt = Jwts.builder()
.signWith(SignatureAlgorithm.HS256,"hongli")//签名算法
.setClaims(map)//自定义内容有效载荷
.setExpiration(new Date(System.currentTimeMillis()+3600*1000))//设置有效期为一个小时
.compact();
System.out.println(jwt);
}*/
}
Loading…
Cancel
Save