手寫郵箱獲取驗證碼註冊登入功能!!!
阿新 • • 發佈:2020-12-08
技術標籤:SpringBootspring boot中介軟體smtp
找回密碼的困擾
自己做了一個部落格網站,有登入註冊功能,但是沒有找回密碼功能,思考了許久,發現可以通過第三方來實現,第一想到的就是通過簡訊驗證碼,但是資金問題,一條0.1元,屬是有點貴(多了就貴了),然後想到了用微信掃碼,但是微信也收費,無奈之下用郵箱吧,感覺郵箱還不錯,只需要開啟STMP協議就行了,開啟之後,會有一個密碼,那個密碼儲存好,後面會用到。
開始建立
首先建立一個springboot專案,然後引入mail依賴,簡單配置即可。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
配置yaml,密碼為自己生成的
準備工作做好之後,下面來寫一下獲取驗證碼的方法,把獲取到的驗證碼存到session中方便後續判斷。
public String getCode(String email, HttpSession session) { int code = (int) (Math.random() * 1000000); String codeString = String.valueOf(code); if (codeString.length() != 6) { code = code + 100000; } SimpleMailMessage message = new SimpleMailMessage(); // 設定郵箱標題 message.setSubject("驗證碼"); // 設定郵箱內容 message.setText("您好!\n驗證碼為:"+ code); // 傳送者郵箱 message.setFrom(username); message.setTo(email); mailSender.send(message); session.setAttribute("email", email); session.setAttribute("code", code + ""); return "success"; }
獲取到驗證碼之後,可以進行註冊了
public BaseResult register(String email, String password, String code, HttpSession session) { User user = new User(); String myEmail = (String) session.getAttribute("email"); String myCode = (String) session.getAttribute("code"); if (!email.equals(myEmail) || !code.equals(myCode)) { return BaseResult.error(); } user.setUsername(UUID.randomUUID().toString()); user.setEmail(email); user.setPassword(password); user.setSalt("abc"); user.setHeadUrl("url"); userMapper.addUser(user); return BaseResult.ok(); }
註冊完之後,就可以進行登入了。
public BaseResult Login(String email, String password) {
User user = userMapper.selectUserByEmail(email);
if (user.getPassword().equals(password)) {
return BaseResult.ok();
}
return BaseResult.error();
}