/** * Copyright (c) 2016-2019 人人开源 All rights reserved. *

* https://www.renren.io *

* 版权所有,侵权必究! */ package io.renren.modules.sys.controller; import io.renren.common.annotation.SysLog; import io.renren.common.utils.HttpContextUtils; import io.renren.common.utils.IPUtils; import io.renren.common.utils.R; import io.renren.modules.sys.entity.SysLogEntity; import io.renren.modules.sys.entity.SysUserEntity; import io.renren.modules.sys.form.SysLoginForm; import io.renren.modules.sys.service.SysCaptchaService; import io.renren.modules.sys.service.SysLogService; import io.renren.modules.sys.service.SysUserService; import io.renren.modules.sys.service.SysUserTokenService; import org.apache.commons.io.IOUtils; import org.apache.shiro.crypto.hash.Sha256Hash; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.imageio.ImageIO; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.awt.image.BufferedImage; import java.io.Console; import java.io.IOException; import java.util.Date; import java.util.Map; /** * 登录相关 * * @author Mark 735032128@qq.com */ @RestController public class SysLoginController extends AbstractController { @Autowired private SysUserService sysUserService; @Autowired private SysUserTokenService sysUserTokenService; @Autowired private SysCaptchaService sysCaptchaService; @Autowired private SysLogService sysLogService; /** * 验证码 */ @GetMapping("captcha.jpg") public void captcha(HttpServletResponse response, String uuid) throws IOException { response.setHeader("Cache-Control", "no-store, no-cache"); response.setContentType("image/jpeg"); //获取图片验证码 BufferedImage image = sysCaptchaService.getCaptcha(uuid); ServletOutputStream out = response.getOutputStream(); ImageIO.write(image, "jpg", out); IOUtils.closeQuietly(out); } /** * 登录 */ @PostMapping("/sys/login") public Map login(@RequestBody SysLoginForm form) throws IOException { /*boolean captcha = sysCaptchaService.validate(form.getUuid(), form.getCaptcha()); if (!form.getCaptcha().equals("8888")) { if (!captcha) { return R.error("验证码不正确"); } }*/ //用户信息 SysUserEntity user = sysUserService.queryByUserName(form.getUsername()); //账号不存在、密码错误 if (user == null || !user.getPassword().equals(new Sha256Hash(form.getPassword(), user.getSalt()).toHex())) { return R.error("账号或密码不正确"); } //账号锁定 if (user.getStatus() == 0) { return R.error("账号已被锁定,请联系管理员"); } //生成token,并保存到数据库 R r = sysUserTokenService.createToken(user.getUserId()); // SysLogEntity sysLog = new SysLogEntity(); //获取request HttpServletRequest request = HttpContextUtils.getHttpServletRequest(); //设置IP地址 sysLog.setIp(IPUtils.getIpAddr(request)); //用户名 sysLog.setUsername(user.getUsername()); sysLog.setCreateDate(new Date()); sysLog.setTime(0l); sysLog.setOperation("登录"); //保存系统日志 sysLogService.save(sysLog); return r; } /** * 退出 */ @PostMapping("/sys/logout") public R logout() { sysUserTokenService.logout(getUserId()); return R.ok(); } }