由于在项目中要实现用户注册的邮箱激活以及忘记密码重置密码功能,所以通过查阅资料做了一个简单的设计和实现。
背景:几乎每个网站或论坛之类的用户注册后都需要通过发送邮件到邮箱激活用户。
设计:
激活步骤:
1、 发送激活操作链接地址至用户邮箱。
2、 用户至邮箱查收邮件。
3、 用户点击链接,跳转至成功页面(修改激活状态),激活成功。
实现:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
/**
* 发送邮件
*
* @param request
* @return
*/
@requestmapping(value = "/sendemail.jhtml")
@responsebody
public string sendemail(httpservletrequest request) {
dynamicparams params = new dynamicparams(request);
stringbuilder builder = new stringbuilder();
stringbuffer url = new stringbuffer();
string type = params.getstring("type");
long uid = params.getlong("id");
user user = usermanager.find(uid);
string subject = "";
// 判断是否已激活
if ("1".equals(string.valueof(user.getemailstatus()))) {
return errmsg();
}
string contextpath = request.getcontextpath();
string rurl = string.valueof(request.getrequesturl());
url.append(rurl.substring(0, rurl.indexof(contextpath)));
url.append(contextpath + "/account");
// 邮箱激活
// url.append("/activateemail.jhtml?email=" + user.getemail() +
// "&id=" + uid + "&mode=activate");
url.append("/activateemail.jhtml?id=" + uid + "&mode=activate");
// 正文
builder.append("<html><head><meta http-equiv=\\"content-type\\" content=\\"text/html; charset=utf-8\\" </head><body>");
builder.append("请点击下方链接激活您的邮箱,完成激活邮箱的操作!");
builder.append("<br/><br/>");
builder.append("<a href=\\"" + url + "\\">");
builder.append(url);
builder.append("</a>");
builder.append("</body></html>");
subject = "邮箱地址激活 - xxxx";
mailsender.mailsimple(user.getemail(), subject, builder.tostring(),
false, null);
return successmsg();
}
/**
* 激活邮箱
*
* @param request
* @return
*/
@requestmapping(value = "/activateemail.jhtml")
public string activateemail(httpservletrequest request, model model) {
dynamicparams params = new dynamicparams(request);
// 激活之前查询
user user = usermanager.find(params.getlong("id"));
if ("1".equals(string.valueof(user.getemailstatus()))) {
// 已激活
model.addattribute("flag", false);
} else {
// 未激活
usermanager.activateemail(params);
// 激活之后查询
user = usermanager.find(params.getlong("id"));
request.getsession().setattribute("sessionuser", user);
model.addattribute("mode", params.getstring("mode"));
model.addattribute("flag", true);
}
return "site/modules/account/activatesuccess";
}
|
mailsender.mailsimple(user.getemail(), subject, builder.tostring(),false, null);即为发送邮件工具类,如有不明白可参考我之前的文章(spring mail发送邮件)
忘记密码(重置密码)
背景:同样是各大网站都会拥有的一个功能,通过发送验证码到用户注册的邮箱重置密码
设计:
1)输入用户名/手机号码/邮箱,验证码。
2)用户选择手机验证或邮箱验证,发送验证码到手机或邮箱。如果用户邮箱未激活,则不允许邮箱验证。
3)用户输入验证码成功,进入密码重新设置页面。
4)重置密码
流程:
实现:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/**
* 发送邮件
*
* @param request
* @return
*/
@requestmapping(value = "/sendemail.jhtml")
@responsebody
public string sendemail(httpservletrequest request) {
dynamicparams params = new dynamicparams(request);
stringbuilder builder = new stringbuilder();
stringbuffer url = new stringbuffer();
string type = params.getstring("type");
long uid = params.getlong("id");
user user = usermanager.find(uid);
string subject = "";
// type = forget 密码重置
string verifycode = verifycodeutils.generateverifycode(4);
request.getsession().setattribute("resetcertcode", verifycode);
url.append("<font color='red'>" + verifycode + "</font>");
// 正文
builder.append("<html><head><meta http-equiv=\\"content-type\\" content=\\"text/html; charset=utf-8\\" /></head><body>");
builder.append("要使用新的密码, 请将已下字符输入验证框中,完成重置密码的操作!");
builder.append("<br/><br/>");
builder.append("<div>" + url + "</div>");
builder.append("</body></html>");
subject = "密码重置 - xxxx";
mailsender.mailsimple(user.getemail(), subject, builder.tostring(),
false, null);
return successmsg();
}
|
至此,激活邮箱和忘记密码功能已初步完成!如有不同看法的朋友,请留下您宝贵的意见或建议。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。
原文链接:https://blog.csdn.net/zwx19921215/article/details/44494543
相关文章
- ASP.NET自助建站系统的域名绑定与解析教程 2025-06-10
- 个人服务器网站搭建:如何选择合适的服务器提供商? 2025-06-10
- ASP.NET自助建站系统中如何实现多语言支持? 2025-06-10
- 64M VPS建站:如何选择最适合的网站建设平台? 2025-06-10
- ASP.NET本地开发时常见的配置错误及解决方法? 2025-06-10
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
-
2025-06-04 77
-
如何在Magento电子商务网站中设置PayPal支付方式?
2025-05-25 42 -
2025-05-27 87
-
2025-06-04 45
-
PHP将MySQL的查询结果转换为数组并用where拼接的示例
2025-05-29 77




