实现登录验证码,邮箱
一 验证码
登录login.jsp
@Autowired
private JavaMailSender javaMailSender;
@Value("${spring.mail.username}")
private String username;
@RequestMapping("/forgetPwd")
public ModelAndView getPwd(HttpServletResponse response,String loginName) throws IOException {
ModelAndView mv=new ModelAndView();
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setFrom(username);
simpleMailMessage.setTo( service.getMail(loginName));//目的邮箱
simpleMailMessage.setSubject(“重置密码”); //邮箱主题
simpleMailMessage.setText(“重置的密码为123456789”);//邮箱内容 自定义
javaMailSender.send(simpleMailMessage);
mv.setViewName(“login/success”);
return mv;
}
后台处理 loginController
@RequestMapping("/login")
public void login(String username, String password,String checkcode, HttpServletResponse response,HttpSession session) throws IOException {
String code =(String) session.getAttribute(“number”);
if (service.login(username,password)null) {
response.getWriter().println(0);
} else if(checkcodenull||checkcode.length()==0||!code.equalsIgnoreCase(checkcode)){
response.getWriter().println(1);
}else{
response.getWriter().println(2);
}
}
@GetMapping("/createImage")
public void createImage(HttpServletResponse response, HttpSession session) throws IOException {
BufferedImage image = new BufferedImage(80, 30, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
Random r = new Random();
g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));
g.fillRect(0, 0, 80, 20);
//获取生成的验证码
String code = getNumber();
//绑定验证码
session.setAttribute(“number”, code);
g.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 25));
g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));
g.drawString(code, 5, 25);
//设置消息头
response.setContentType(“image/jpeg”);
OutputStream os = response.getOutputStream();
ImageIO.write(image, “jpeg”, os);
}
public String getNumber(){
String str = “1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ”;
String code = “”;
for(int i= 0;i<4;i++){
int index = (int)(Math.random()*str.length());
code+=str.charAt(index);
}
return code;
}
二 邮箱(主要功能:输入用户名,将重置密码发往注册时与用户名绑定的邮箱)
在你的 application.yml中加入
spring:
mail:
host: (发送者邮箱类型)
form: (发送者邮箱用户名)
port: 25
username: (发送者邮箱用户名)
password: (发送者邮箱密码)
@Autowired
private JavaMailSender javaMailSender;
@Value("${spring.mail.username}")
private String username;
@RequestMapping("/forgetPwd")
public ModelAndView getPwd(HttpServletResponse response,String loginName) throws IOException {
ModelAndView mv=new ModelAndView();
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setFrom(username);
simpleMailMessage.setTo( service.getMail(loginName));//目的邮箱
simpleMailMessage.setSubject(“重置密码”); //邮箱主题
simpleMailMessage.setText(“重置的密码为123456789”);//邮箱内容 自定义
javaMailSender.send(simpleMailMessage);
mv.setViewName(“login/success”);
return mv;
}