package cn.binux.sso.controller;
import cn.binux.constant.Const;
import cn.binux.redis.service.JedisClient;
import cn.binux.sso.utils.VerifyCodeUtils;
import com.alibaba.dubbo.config.annotation.Reference;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* 验证码 Controller
*
* @author xubin.
* @create 2017-04-08
*/
@Controller
public class AuthImagesController {
private static final Logger logger = LoggerFactory.getLogger(AuthImagesController.class);
@Reference(version = Const.XBIN_STORE_REDIS_VERSION)
private JedisClient jedisClient;
@Value("${redisKey.prefix.verifycode}")
private String VERIFYCODE;
@Value("${redisKey.expire_time}")
private Integer EXPIRE_TIME;
@ApiOperation(value = "生成图片验证码",notes = "需要传递一个uuid作为用户本次登录的唯一表示")
@ApiImplicitParam(name = "uid",value = "每个 uid 对应一次用户登录",required = true,dataType = "String")
@RequestMapping(value = "/verify/image", method = RequestMethod.GET)
public void verifyimage(String uid, HttpServletResponse response) {
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
response.setContentType("image/jpeg");
//生成随机字串
String verifyCode = VerifyCodeUtils.generateVerifyCode(4);
//存入Redis
String key = VERIFYCODE + uid;
jedisClient.set(key, verifyCode);
jedisClient.expire(key, EXPIRE_TIME);
//生成图片
int w = 100, h = 30;
try {
VerifyCodeUtils.outputImage(w, h, response.getOutputStream(), verifyCode);
} catch (IOException e) {
logger.error("验证码生成失败", e);
}
}
}