TokenController.java 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package com.ruoyi.auth.controller;
  2. import javax.servlet.http.HttpServletRequest;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.web.bind.annotation.DeleteMapping;
  5. import org.springframework.web.bind.annotation.PostMapping;
  6. import org.springframework.web.bind.annotation.RequestBody;
  7. import org.springframework.web.bind.annotation.RestController;
  8. import com.ruoyi.auth.form.LoginBody;
  9. import com.ruoyi.auth.form.RegisterBody;
  10. import com.ruoyi.auth.service.SysLoginService;
  11. import com.ruoyi.common.core.domain.R;
  12. import com.ruoyi.common.core.utils.JwtUtils;
  13. import com.ruoyi.common.core.utils.StringUtils;
  14. import com.ruoyi.common.security.auth.AuthUtil;
  15. import com.ruoyi.common.security.service.TokenService;
  16. import com.ruoyi.common.security.utils.SecurityUtils;
  17. import com.ruoyi.system.api.model.LoginUser;
  18. /**
  19. * token 控制
  20. *
  21. * @author ruoyi
  22. */
  23. @RestController
  24. public class TokenController
  25. {
  26. @Autowired
  27. private TokenService tokenService;
  28. @Autowired
  29. private SysLoginService sysLoginService;
  30. @PostMapping("login")
  31. public R<?> login(@RequestBody LoginBody form)
  32. {
  33. // 用户登录
  34. LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword());
  35. // 获取登录token
  36. return R.ok(tokenService.createToken(userInfo));
  37. }
  38. @DeleteMapping("logout")
  39. public R<?> logout(HttpServletRequest request)
  40. {
  41. String token = SecurityUtils.getToken(request);
  42. if (StringUtils.isNotEmpty(token))
  43. {
  44. String username = JwtUtils.getUserName(token);
  45. // 删除用户缓存记录
  46. AuthUtil.logoutByToken(token);
  47. // 记录用户退出日志
  48. sysLoginService.logout(username);
  49. }
  50. return R.ok();
  51. }
  52. @PostMapping("refresh")
  53. public R<?> refresh(HttpServletRequest request)
  54. {
  55. LoginUser loginUser = tokenService.getLoginUser(request);
  56. if (StringUtils.isNotNull(loginUser))
  57. {
  58. // 刷新令牌有效期
  59. tokenService.refreshToken(loginUser);
  60. return R.ok();
  61. }
  62. return R.ok();
  63. }
  64. @PostMapping("register")
  65. public R<?> register(@RequestBody RegisterBody registerBody)
  66. {
  67. // 用户注册
  68. sysLoginService.register(registerBody.getUsername(), registerBody.getPassword());
  69. return R.ok();
  70. }
  71. }