|
@@ -5,6 +5,7 @@ import com.google.code.kaptcha.Producer;
|
|
|
import com.kmall.common.annotation.SysLog;
|
|
|
import com.kmall.common.utils.R;
|
|
|
import com.kmall.common.utils.ShiroUtils;
|
|
|
+import com.kmall.common.utils.redis.JedisUtil;
|
|
|
import org.apache.shiro.authc.*;
|
|
|
import org.apache.shiro.crypto.hash.Sha256Hash;
|
|
|
import org.apache.shiro.subject.Subject;
|
|
@@ -17,7 +18,9 @@ import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
import javax.imageio.ImageIO;
|
|
|
import javax.servlet.ServletException;
|
|
|
import javax.servlet.ServletOutputStream;
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
+import javax.servlet.http.HttpSession;
|
|
|
import java.awt.image.BufferedImage;
|
|
|
import java.io.IOException;
|
|
|
import java.util.HashSet;
|
|
@@ -34,9 +37,10 @@ import java.util.Set;
|
|
|
public class SysLoginController {
|
|
|
@Autowired
|
|
|
private Producer producer;
|
|
|
+ public static int wsTokenExpireTime = 3600 * 24 * 30;
|
|
|
|
|
|
@RequestMapping("captcha.jpg")
|
|
|
- public void captcha(HttpServletResponse response) throws ServletException, IOException {
|
|
|
+ public void captcha(HttpServletResponse response, HttpSession session) throws ServletException, IOException {
|
|
|
response.setHeader("Cache-Control", "no-store, no-cache");
|
|
|
response.setContentType("image/jpeg");
|
|
|
|
|
@@ -45,7 +49,7 @@ public class SysLoginController {
|
|
|
//生成图片验证码
|
|
|
BufferedImage image = producer.createImage(text);
|
|
|
//保存到shiro session
|
|
|
- ShiroUtils.setSessionAttribute(Constants.KAPTCHA_SESSION_KEY, text);
|
|
|
+ JedisUtil.set(Constants.KAPTCHA_SESSION_KEY, text, wsTokenExpireTime);
|
|
|
|
|
|
ServletOutputStream out = response.getOutputStream();
|
|
|
ImageIO.write(image, "jpg", out);
|
|
@@ -57,8 +61,10 @@ public class SysLoginController {
|
|
|
@SysLog("登录")
|
|
|
@ResponseBody
|
|
|
@RequestMapping(value = "/sys/login", method = RequestMethod.POST)
|
|
|
- public R login(String username, String password, String captcha) throws IOException {
|
|
|
- String kaptcha = ShiroUtils.getKaptcha(Constants.KAPTCHA_SESSION_KEY);
|
|
|
+ public R login(String username, String password, String captcha,HttpSession session) throws IOException {
|
|
|
+ String kaptcha = (String) JedisUtil.get(Constants.KAPTCHA_SESSION_KEY);
|
|
|
+ System.out.println(kaptcha);
|
|
|
+ JedisUtil.del(Constants.KAPTCHA_SESSION_KEY);
|
|
|
if (!captcha.equalsIgnoreCase(kaptcha)) {
|
|
|
return R.error("验证码不正确");
|
|
|
}
|