下面是我写的email验证和激活:

自己瞎写的,能用,不喜欢勿喷

    action中regist方法中代码

  1. /**
  2. *
  3. * 发送邮件的方法
  4. */
  5. StringBuffer sb=new StringBuffer("点击下面链接激活账号,48小时生效,否则重新注册账号,链接只能使用一次,请尽快激活!<br>");
  6. sb.append("http://localhost:**********action?email=");
  7. sb.append(user.getEmail());
  8. sb.append("&code=");
  9. sb.append(user.getCode());
  10. sb.append("");
  11.  
  12. //发送邮件
  13. SendEmail.send(user.getEmail(), sb.toString());

    action中处理激活的方法

  1. /**
  2. * 处理激活
  3. */
  4. public String active() throws ServiceException, ParseException {
  5. //获得原生态rquest
  6. HttpServletRequest request = (HttpServletRequest) ActionContext
  7. .getContext()
  8. .get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);
  9. service.processActivate(request.getParameter("email"), request.getParameter("code"));
  10. this.addActionMessage("激活成功,请点击去登录");
  11. return "succ";
  12. }

    service层处理激活的方法(我的代码激活清空了激活码,你也可以选择不清空激活码)

  1. /**
  2. * 处理激活
  3. * @throws ParseException
  4. */
  5. ///传递激活码和email过来
  6. public void processActivate(String email , String code)throws ServiceException, ParseException{
  7. //数据访问层,通过email获取用户信息
  8. List<User> list=dao.findByEmail(email);
  9. User users=list.get(0);
  10. //验证用户是否存在
  11. if(users!=null) {
  12. //验证用户激活状态
  13. if(users.getState()==0) {
  14. ///没激活
  15. Date currentTime = new Date();//获取当前时间
  16. //验证链接是否过期
  17. currentTime.before(users.getRegisterTime());
  18. if(currentTime.before(users.getLastActivateTime())) {
  19. //验证激活码是否正确
  20. if(code.equals(users.getCode())) {
  21. //激活成功, //并更新用户的激活状态,为已激活
  22. users.setState(1);//把状态改为激活
  23. users.setCode("");//把激活码清空
  24. dao.update(users);
  25. } else {
  26. throw new ServiceException("激活码不正确");
  27. }
  28. } else { throw new ServiceException("激活码已过期!");
  29. }
  30. } else {
  31. throw new ServiceException("邮箱已激活,请登录!");
  32. }
  33. } else {
  34. throw new ServiceException("该邮箱未注册(邮箱地址不存在)!");
  35. }
  36.  
  37. }

    Service层中的涉及到的update方法,下面的代码写在dao层,service层中还有一个findByEmail()方法我就不贴出来了

  1. @Override
  2. public void update(User user)
  3. {
  4. Session session = sessionFactory.getCurrentSession();
  5. session.update(user);
  6. }

SSH邮箱验证与激活的更多相关文章

  1. (进阶篇)PHP实现用户注册后邮箱验证,激活帐号

    我们在很多网站注册会员时,注册完成后,系统会自动向用户的邮箱发送一封邮件,这封邮件的内容就是一个URL链接,用户需要点击打开这个链接才能激活之前在该网站注册的帐号.激活成功后才能正常使用会员功能. 本 ...

  2. (进阶篇)PHP(thinkphp5框架)实现用户注册后邮箱验证,激活帐号

    本文将结合实例,讲解如何使用thinkphp5+Mysql完成注册帐号.发送激活邮件.验证激活帐号.处理URL链接过期的功能. 业务流程 1.用户提交注册信息. 2.写入数据库,此时帐号状态未激活. ...

  3. PHP用户注册邮箱验证激活帐号

    我们在很多网站注册会员时,注册完成后,系统会自动向用户的邮箱发送一封邮件,这封邮件的内容就是一个URL链接,用户需要点击打开这个链接才能激活之前在该网站注册的帐号.激活成功后才能正常使用会员功能. 本 ...

  4. .net 实现注册邮箱验证激活

    没事上网当了个注册邮箱验证激活的代码,用起来感觉还不错,特意和大家要一起分享一下 下面是主要实现代码: uing System.Net.Mail; public partial class jquer ...

  5. [转]C# 邮箱验证激活

    原文链接 /// <summary> /// 发送邮件 发送激活码 /// </summary> /// <param name="address"& ...

  6. 使用邮箱验证登录后台ssh,再也不怕被人攻击服务器了!

    目录 前言 安装教程 前言 之前写过使用用户名密码,以及扫描二维码方式验证后台登录ssh的文章:[点击跳转]. 但是这样还是不太保险,也存在被人利用的情况,因为别人破解你的后台你压根不知道.因此想到使 ...

  7. javamail实现邮箱验证功能

    javamail是基于SMTP协议和POP3协议的邮件发送与接收系统,在用户注册与登陆的过程中,常需要用到邮箱验证功能,下面是基于javamail的一个简单实现 用户注册后通过servlet得到邮箱地 ...

  8. Spring技术_邮箱注册_激活_获取验证码

    项目结构 项目中用到的sql: create database hrSystem; use hrSystem; CREATE TABLE `emailverificationcode` ( `id` ...

  9. SSH网上商城---用户激活

    在前面的博客中,小编主要结合SSH网上商城这个项目,简单的介绍了如何实现邮件发送的这个功能,邮件发送了,接下来就是激活了,为什么呢?现在大多网站都要通过对账号进行激活,然后才能注册成功,这是防止恶性注 ...

随机推荐

  1. dataset转list实体

    private static object GetDefaultValue(object obj, Type type) { if (obj == DBNull.Value) { return def ...

  2. paper 118:计算机视觉、模式识别、机器学习常用牛人主页链接

    牛人主页(主页有很多论文代码) Serge Belongie at UC San Diego Antonio Torralba at MIT Alexei Ffros at CMU Ce Liu at ...

  3. mysql count(*)和count(列)速率

    count(*)通常是对主键进行索引扫描,count(列)不一定 count(*)是统计表中所有符合的记录总数,count(列)是计算表中所有符合的列的记录数 count的时候,如果没有where限制 ...

  4. rdesktop共享剪贴板的问题

    使用-r clipboard:PRIMARYCLIPBOARD参数来共享剪贴板,连接到window7 但有时就不好用了,剪贴板没有同步 找到一些相关的资料 https://bugs.launchpad ...

  5. redmine computed custom field formula tips

    项目中要用到Computed custom field插件,公式不知道怎么写,查了些资料,记录在这里. 1.http://apidock.com/ruby/Time/strftime 查看ruby的字 ...

  6. wex5 实战 登陆帐号更换与用户id一致性

    一 前言 关于用户登陆,注册,页面跳转,我讲了很多,都是页面框架级别的.有人问到这个问题,索性总结一下,今天是收尾最后一篇. 以往初学时的设计是: 1 注册 2 登陆 3 进入页面. 这种很简单,没有 ...

  7. Centos7下Etcd集群搭建

    一.简介 "A highly-available key value store for shared configuration and service discovery." ...

  8. kafka入门教程链接

    http://www.aboutyun.com/forum.php?mod=viewthread&tid=12882 经典入门教程 1.Kafka独特设计在什么地方?2.Kafka如何搭建及创 ...

  9. Linux C 学习

    int main() { int64_t test = ; printf("%lld\n",test); float f_test = 100.2123; printf(" ...

  10. JavaScript---function、this关键字相关习题

    1. 请看下列代码: function F( ){ function C( ){ return this; } return C(); } var o=new F( ); 请问上面的this值指向的是 ...