簡體   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