package com.huimv.admin.controller; import com.huimv.admin.entity.Account; import com.huimv.admin.exception.ExceptionEnum; import com.huimv.admin.exception.MiException; import com.huimv.admin.service.ILoginService; import com.huimv.admin.session.AccessToken; import com.huimv.admin.token.TokenSign; import com.huimv.admin.utils.Result; import com.huimv.admin.utils.ResultCode; import com.huimv.admin.utils.VerifyUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Date; import java.util.Map; import java.util.concurrent.TimeUnit; @CrossOrigin @RestController @RequestMapping(value = "/my") public class LoginController { @Autowired ILoginService iLoginService; // @Autowired // RedisTemplate redisTemplate; @RequestMapping(value = "/login", method = RequestMethod.POST) public Result login(HttpServletRequest req, @RequestBody Map map) { // 对密码加密 // Result result = iLoginService.login(accountName, .getMD5Str(password)); String accountName = map.get("accountName"); String password = map.get("password"); String code = map.get("code"); String remoteHost = req.getRemoteHost(); String redisCode = redisTemplate.opsForValue().get(remoteHost); if (redisCode == null) { return new Result(10005,"验证码过期,点击刷新",false); } if (!redisCode.equals(code.toUpperCase())) { return new Result(10006,"验证码错误,登录失败",false); } // 未对密码加密 Result result = iLoginService.login(accountName, password); if(result.getCode() == 10000){ AccessToken accessToken = new AccessToken(); accessToken.setCreated(new Date()); accessToken.setAccountName(accountName); accessToken.setCode(result.getCode()); accessToken.setMessage(result.getMessage()); String token = TokenSign.sign(accountName); accessToken.setToken(token); Account accountEntity = (Account) result.getData(); accessToken.setId( accountEntity.getId()); accessToken.setLoginIp(remoteHost); return new Result(ResultCode.SUCCESS,accessToken); } return result; } @RequestMapping("/logout") public Result logout(@RequestParam(name = "accountName", required = true) String accountName, @RequestParam(name = "password", required = true) String password) { return iLoginService.logout(); } @Autowired private RedisTemplate redisTemplate; @GetMapping("/send") public void createImg(HttpServletRequest request, HttpServletResponse response) { try { //设置响应类型,告诉浏览器输出的内容为图片 response.setContentType("image/jpeg"); //设置响应头信息,告诉浏览器不要缓存此内容 response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expire", 0); VerifyUtil randomValidateCode = new VerifyUtil(); //输出验证码图片 String code = randomValidateCode.getRandcode(request, response); System.out.println(code); //将生成的随机验证码存放到redis中 String remoteHost = request.getRemoteHost(); redisTemplate.opsForValue().set(remoteHost,code,300, TimeUnit.SECONDS); } catch (Exception e) { System.out.println("获取验证码异常:"+e); throw new MiException(ExceptionEnum.VERIFCATION_FAID); } } }