@Component public class AuthUtil { private final RedisTemplateUtil<String, Object> permRedisManager; public AuthUtil(RedisTemplateUtil<String, Object> permRedisManager) { this.permRedisManager = permRedisManager; } public static final String SYS_EMPLOYEE_NAME = "sysEmployee"; public static final String MEMBER_NAME = "member"; public static final Long MEMBER_EXPIRES_TIME = 60L * 60 * 24; public static final Long SYS_EMPLOYEE_EXPIRES_TIME = 60L * 30; public String buildToken(String id, String name, Object loginObj) { String jwt = JWTBuilder.createJWT(id, name, loginObj); permRedisManager.set(id + "RF_AUTH", jwt, MEMBER_EXPIRES_TIME); String md5 = PasswordUtil.md5(jwt); if (name.equals(AuthUtil.SYS_EMPLOYEE_NAME)) { permRedisManager.set(PasswordUtil.md5(jwt), jwt, SYS_EMPLOYEE_EXPIRES_TIME); } else if (name.equals(AuthUtil.MEMBER_NAME)) { permRedisManager.set(PasswordUtil.md5(jwt), jwt, MEMBER_EXPIRES_TIME); } return md5; } public void removeToken(long id) { Object jetObj = permRedisManager.get(id + "RF_AUTH"); if (Validator.valid(jetObj)) { String md5 = PasswordUtil.md5((String) jetObj); permRedisManager.del(id + "RF_AUTH"); permRedisManager.del(md5); } } public String buildTokenWithExpires(String id, String name, Object loginObj) { String jwt = JWTBuilder.createJWTWithExpires(id, name, loginObj, 0); permRedisManager.set(id + "RF_AUTH", jwt); return jwt; } public String buildTokenWithExpires(String id, String name, Object loginObj, long time) { String jwt = JWTBuilder.createJWTWithExpires(id, name, loginObj, time); permRedisManager.set(id + "RF_AUTH", jwt); return jwt; } public void setPerm(long id, List<?> perms) { JSONArray array = (JSONArray) JSONArray.toJSON(perms); permRedisManager.set(id + "RF_AUTH_PERM", array.toJSONString()); } }这个类用于生成token和解析token,请问登录接口用java代码怎么写?@DeleteMapping("/deleteCode/{encode}") public JsonData<User> deleteCode(@PathVariable String encode) 接口在vue前端如何访问?
时间: 2024-04-22 17:23:59 浏览: 146
Spring注解 @Component、@Repository、@Service、@Controller区别
4星 · 用户满意度95%
生成token的代码可以像下面这样写:
@PostMapping("/login")
public JsonData<String> login(@RequestBody User user) {
// 根据用户名和密码查询用户信息
User loginUser = userService.login(user.getUsername(), user.getPassword());
if (loginUser == null) {
return JsonData.buildError("用户名或密码错误");
}
// 生成token并返回
AuthUtil authUtil = new AuthUtil(redisTemplateUtil);
String token = authUtil.buildToken(loginUser.getId().toString(), AuthUtil.MEMBER_NAME, loginUser);
return JsonData.buildSuccess(token);
}
其中,`userService.login` 方法用于查询数据库中是否存在对应的用户信息。
关于前端访问接口,可以使用 axios 库进行请求。假设接口地址为 `/deleteCode/{encode}`,则可以像下面这样写:
import axios from 'axios';
const encode = 'xxxxxx'; // 假设需要传递的参数为 xxxxxx
axios.delete(`/deleteCode/${encode}`).then(response => {
// 请求成功后的处理
}).catch(error => {
// 请求失败后的处理
});
其中,`axios.delete` 方法表示发送一个 DELETE 请求,`${encode}` 表示将参数 encode 替换到接口地址中的占位符 `{encode}` 中。
阅读全文