LoginController.java 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package com.huimv.admin.controller;
  2. import com.huimv.admin.entity.Account;
  3. import com.huimv.admin.exception.ExceptionEnum;
  4. import com.huimv.admin.exception.MiException;
  5. import com.huimv.admin.service.ILoginService;
  6. import com.huimv.admin.session.AccessToken;
  7. import com.huimv.admin.token.TokenSign;
  8. import com.huimv.admin.utils.Result;
  9. import com.huimv.admin.utils.ResultCode;
  10. import com.huimv.admin.utils.VerifyUtil;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.data.redis.core.RedisTemplate;
  13. import org.springframework.web.bind.annotation.*;
  14. import javax.servlet.http.HttpServletRequest;
  15. import javax.servlet.http.HttpServletResponse;
  16. import java.util.Date;
  17. import java.util.Map;
  18. import java.util.concurrent.TimeUnit;
  19. @CrossOrigin
  20. @RestController
  21. @RequestMapping(value = "/my")
  22. public class LoginController {
  23. @Autowired
  24. ILoginService iLoginService;
  25. // @Autowired
  26. // RedisTemplate redisTemplate;
  27. @RequestMapping(value = "/login", method = RequestMethod.POST)
  28. public Result login(HttpServletRequest req, @RequestBody Map<String,String> map) {
  29. // 对密码加密
  30. // Result result = iLoginService.login(accountName, .getMD5Str(password));
  31. String accountName = map.get("accountName");
  32. String password = map.get("password");
  33. String code = map.get("code");
  34. String remoteHost = req.getRemoteHost();
  35. String redisCode = redisTemplate.opsForValue().get(remoteHost);
  36. if (redisCode == null) {
  37. return new Result(10005,"验证码过期,点击刷新",false);
  38. }
  39. if (!redisCode.equals(code.toUpperCase())) {
  40. return new Result(10006,"验证码错误,登录失败",false);
  41. }
  42. // 未对密码加密
  43. Result result = iLoginService.login(accountName, password);
  44. if(result.getCode() == 10000){
  45. AccessToken accessToken = new AccessToken();
  46. accessToken.setCreated(new Date());
  47. accessToken.setAccountName(accountName);
  48. accessToken.setCode(result.getCode());
  49. accessToken.setMessage(result.getMessage());
  50. String token = TokenSign.sign(accountName);
  51. accessToken.setToken(token);
  52. Account accountEntity = (Account) result.getData();
  53. accessToken.setId( accountEntity.getId());
  54. accessToken.setLoginIp(remoteHost);
  55. return new Result(ResultCode.SUCCESS,accessToken);
  56. }
  57. return result;
  58. }
  59. @RequestMapping("/logout")
  60. public Result logout(@RequestParam(name = "accountName", required = true) String accountName, @RequestParam(name = "password", required = true) String password) {
  61. return iLoginService.logout();
  62. }
  63. @Autowired
  64. private RedisTemplate<String, String> redisTemplate;
  65. @GetMapping("/send")
  66. public void createImg(HttpServletRequest request, HttpServletResponse response) {
  67. try {
  68. //设置响应类型,告诉浏览器输出的内容为图片
  69. response.setContentType("image/jpeg");
  70. //设置响应头信息,告诉浏览器不要缓存此内容
  71. response.setHeader("Pragma", "No-cache");
  72. response.setHeader("Cache-Control", "no-cache");
  73. response.setDateHeader("Expire", 0);
  74. VerifyUtil randomValidateCode = new VerifyUtil();
  75. //输出验证码图片
  76. String code = randomValidateCode.getRandcode(request, response);
  77. System.out.println(code);
  78. //将生成的随机验证码存放到redis中
  79. String remoteHost = request.getRemoteHost();
  80. redisTemplate.opsForValue().set(remoteHost,code,300, TimeUnit.SECONDS);
  81. } catch (Exception e) {
  82. System.out.println("获取验证码异常:"+e);
  83. throw new MiException(ExceptionEnum.VERIFCATION_FAID);
  84. }
  85. }
  86. }