spring Boot登录验证之验证码 邮箱
一 验证码
登录login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>xxx需求管理系统</title>
</head>
<script src="${pageContext.request.contextPath}/js/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
$(function () {
$("#login").click(function () {
var url="${pageContext.request.contextPath}/login"
var json={"username":$("#username").val(),"password":$("#password").val(),"checkcode":$("#checkcode").val()};
if($("#username").val()==""){
alert("用户名不能为空")
}else if($("#password").val()==""){
alert("密码不能为空")
}else {
function callback(msg) {
if(msg==0){
alert("用户名或密码错误")
}else if(msg==1){ alert("验证码错误!")
}else if(msg==2){
window.location.href="${pageContext.request.contextPath}/toSxf";
}
}
}
$.get(url,json,callback);
})
})
</script>
<body>
<div align="center" style="margin-top: 150px">
<h2 style="color: blue">xxx需求管理系统登录界面</h2>
用户名:<input type="text" name="username" id="username"></br></br>
密   码:<input type="password" name="password" id="password"></br></br>
<table align="center">
<tr>
<td>验证码:</td>
<td class="width50"><input id="checkcode" name="checkcode" type="text" class="width50" /></td>
<td><img src="createImage" alt="验证码" title="点击更换" onclick="this.src='createImage?'+(new Date()).getTime();"/></td>
<td><span id="checkcode_msg" class="required"></span></td>
</tr>
</table>
<input type="submit" value="登录" id="login">
<a href="${pageContext.request.contextPath}/toForgetPwd">忘记密码?</a>
<a href="${pageContext.request.contextPath}/toUpdatePwd">修改密码?</a>
</div>
</body>
</html>
后台处理 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(checkcode==null||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;
}
spring Boot登录验证之验证码 邮箱的更多相关文章
- Spring Security登录验证流程源码解析
一.登录认证基于过滤器链 Spring Security的登录验证流程核心就是过滤器链.当一个请求到达时按照过滤器链的顺序依次进行处理,通过所有过滤器链的验证,就可以访问API接口了. SpringS ...
- spring boot 登录注册 demo (四) -- 体验小结
之前没有折腾过Spring,直接上来怼Spring Boot异常痛苦,参考着官网的guide(https://spring.io/guides)写了几个demo: spring boot 跑起来确是方 ...
- 2-功能1:基于用户认证组件和Ajax实现登录验证(图片验证码)
1.登录页面的设计 (1)label标签的id属性 label标签的id属性,点击label标记,相当于点击了input框 bootstarp样式 class="form-group&quo ...
- spring boot 登录认证
玩转spring boot——简单登录认证 https://www.cnblogs.com/GoodHelper/p/6343190.html 玩转spring boot——简单登录认证 https: ...
- Spring Boot系列(四) Spring Boot 之验证
这节没有高深的东西, 但有一些学习思路值得借鉴. JSR 303 (Bean Validation) Maven依赖 <dependency> <groupId>org.spr ...
- spring boot 登录注册 demo (二) -- 数据库访问
通过data-jpa来访问数据库 <dependency> <groupId>org.springframework.boot</groupId> <arti ...
- spring boot 登录注册 demo (一)
Welcome to Spring Boot 代码结构 src/main/java 下 controller层,路由功能dao层,数据库的访问domain,bean的存放service,业务层appl ...
- VC POST表单——登录验证新浪邮箱
1.本机环境: Windows XP SP3.ADSL 2.开发工具: WildPackets OmniPeek V5.1.4 Visual C++ 6.0 IE6.0 FlexEdit V2.3.1 ...
- SpringMVC+Apache Shiro+JPA(hibernate)案例教学(三)给Shiro登录验证加上验证码
序: 给Shiro加入验证码,有多种方式,当然你也可以通过继承修改FormAuthenticationFilter类,通过Shiro去验证验证码.具体实现请百度: 应用Shiro到Web Applic ...
随机推荐
- oracle存储过程随笔
有时间要把最近总结的存储过程的问题总结一下,先占坑: create or replace procedure test_proc2 as cursor cur is select YWR,YWRZJH ...
- REVIT 卸载工具,完美彻底卸载清除干净revit各种残留注册表和文件
一些同学安装revit出错了,也有时候想重新安装revit的时候会出现这种本电脑windows系统已安装revit,你要是不留意直接安装,只会安装revit的附件,revit是不会安装上的.这种原因呢 ...
- Jquery中的offset()和position()深入剖析
jquery 中有两个获取元素位置的方法offset()和position(),这两个方法之间有什么异同?使用的时候应该注意哪些问题?什么时候使用offset(),什么时候又使用position()呢 ...
- 输入一个url之后到底发生了什么 - Hurry
背景 最近学习到 nginx 方向代理发现,nginx 可以将你的请求以 http 块的 server 形式代理到请求的域名或者 ip 地址. 一个简单的 nigx 配置如下: 12345678 se ...
- Android开发之《Module相互引用,NDK不能正常Debug》
解决Android Studio不能进入调试模式问题 Android Studio 2.2.3 native debug 无法调试?:https://www.zhihu.com/question/54 ...
- mybatis-generator二次开发总结
二次开发(此文只作记录,具体代码及文章在内网,copy不出来) 自定义生成代码需求: 1.去除默认生成的example接口方法: (1)配置generatorConfig.xml (2)修改源码tab ...
- 双股同时上市!小米IPO是想要玩场大的?
近日,据相关媒体报道,有相关人士称小米IPO最终可能敲定A+H股两地发行.但目前还未得到小米官方证实.此前关于小米要上市的消息已经流传已久了,从雷军刚开始的矢口否认到后来的默认,再到后来相关消息愈来 ...
- Python---6条件判断与循环
条件判断 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,用if语句实现: age = 20 if age >= ...
- console.log添加样式及图片
console.log在控制台打出css样式的文字及图片 谷歌开发者中心上面关于谷歌浏览器控制台console.log()的文档 Format Specifier %s Formats the val ...
- 添砖加瓦:简述ELK部署
1.准备工作 ELK下载:https://www.elastic.co/downloads/ jdk version:1.8.0_162 2.环境搭建 ElasticSearch: (1)不能使用ro ...