繁体   English   中英

JavaMail - 用于用户注册的电子邮件身份验证

[英]JavaMail - Email Authentication for user registration

我正在开发一个基于Spring的网络应用程序,当用户输入他的电子邮件和密码进行注册时, 我想验证它们并向他发送电子邮件 。我使用了java mail api并正确设置了gmail smtp

这是我的注册控制器类。

    @RequestMapping(value = "/globalshop/register", method = RequestMethod.GET)
    public final ModelAndView registerModel(
            HttpServletRequest request, HttpServletResponse response)
    {
        final String user_email = request.getParameter("user_email");
        final String user_password = request.getParameter("user_password"); 

        Properties email_properties = new Properties();

        email_properties.put("mail.smtp.auth", "true");
        email_properties.put("mail.smtp.starttls.enable", "true");
        email_properties.put("mail.smtp.host", "smtp.gmail.com");       
        email_properties.put("mail.smtp.port", "587");

        final String siteEmail = "**************@gmail.com";
        final String siteEmailPassword = "*************";

        Session session= Session.getInstance(email_properties, new Authenticator() {
            protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
                return new javax.mail.PasswordAuthentication(siteEmail, siteEmailPassword);

            }
        });


        try {
            Message message = new MimeMessage(session);

            message.setFrom(new InternetAddress(siteEmail));
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(user_email));
            message.setSubject("Testing Subject");
            message.setText("Dear User,"+ "\n\n You have been successfully registerd with the gift corner!");

            Transport.send(message);
            System.out.println("Done");

        } catch (AddressException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (MessagingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


        registerSucessView = new ModelAndView("test_register_succes");      
        registerSucessView.addObject("welcome", "welcome user");


        return registerSucessView;
    }

}

user_emailuser_password是传入的请求参数。 我该如何验证它们 如果验证成功,则user_email可以设置为message.setRecipients(...)

春天确实提供了一种机制来验证你的模型,如图所示这里 我个人建议您遵循这些准则,以便您的应用程序充分利用Spring提供的功能。

话虽这么说,用户名的最基本验证形式是确保用户名不在您的数据库中,在某些情况下,可能不允许某些特殊字符。

另一方面,对于密码,通常存在一些长度限制,例如至少5个字符。 在某些情况下,您还可以强制使用不同套管,数字和其他特殊符号的字母。 在这些情况下,正则表达式可能会有所帮助。 注意:对于这种情况,不建议构建一个试图匹配所有内容的单一正则表达式)。

在一个完全不同的说明中,不要忘记将密码存储为哈希值,然后,当用户登录时,您将用户输入的密码的哈希值与您已经输入的哈希值进行比较。 D B。

如果您不知道用户使用的是哪台服务器,则了解用户的电子邮件地址对您没有帮助。 在许多情况下,有很多方法可以解决这个问题,但即使你能弄明白,也可能无法访问该服务器。 要求输入密码的唯一原因是因为您想要登录用户的电子邮件服务器,就像您是该用户一样。 希望用户信任你!

如果您真的只是想知道用户的电子邮件地址是有效的,以便您可以向该用户发送电子邮件,唯一真正的方法是向该地址发送消息并要求用户做某事(例如,访问如果收到消息,则说明服务器上的URL。

您可以在JavaMail FAQ中找到更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM