์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ์ธํ ๋ฆฌ์ ์ด Web ์ ํ๋ฆฌ์ผ์ด์
- ์ฐ์ฐ์
- SpringSecurity ๋ก๊ทธ์ธ
- ์น์ ํ SQL
- ์๋ณ์
- join
- ์ฐ์ ์ฐ์ฐ์
- ๋ ผ๋ฆฌ ์ฐ์ฐ์
- java
- StringBuffer
- ์น์ ํ SQL ํ๋
- ์์ฝ์ด
- ์ดํด๋ฆฝ์ค ์ค์น
- ์คํ๋ง์ํ๋ฆฌํฐ ๋ก๊ทธ์์
- SQL ํ๋
- ์ค๋ฒ๋ผ์ด๋ฉ
- ํจ์
- ๊ฐ์ฒด์งํฅ
- ๋ฐ๋ณต๋ฌธ
- SpringSecurity ๋ก๊ทธ์์
- ๋ฐฐ์ด
- @PreAuthorize("isAuthenticated()")
- ์ค๋ฒ๋ก๋ฉ
- SQL
- ๊ฐ์ฒด
- ๋น๊ต ์ฐ์ฐ์
- SQLํ๋
- ์์
- spring ๊ฒ์ํ ์ญ์
- ์๋ฐ์์ ์
- Today
- Total
gi_dor
[error] update ๋น๋ฐ๋ฒํธ ์ํธํ ๋ฌธ์ ๋ณธ๋ฌธ
๐ ์ํฉ
๊ณ์ ๋น๋ฐ๋ฒํธ๋ฅผ ๊น๋จน์ด ์ด๋ฉ์ผ๋ก ์์๋น๋ฐ๋ฒํธ๋ฅผ ๋ฐ๊ธ ๋ฐ์๋ค
ํ์ง๋ง ์ํธํ๋์ด๋ฒ๋ฆฐ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ฐ๊ฒ๋์๋ค ๋ํ DB์๋ ๋ฐ๋๋ก ์ํธํ๋์ง ์์ ๋น๋ฐ๋ฒํธ๊ฐ ์ ์ฅ๋์ด์๋ค
https://gi-dor.tistory.com/245
// ์์ธ ๋ฐ์ํ๋ฉด ๋กค๋ฐฑ๋์ ์ด์ ์ํ๋ก ๊ฐ๊ฒํ๋ ค๊ณ - ACID
@Transactional
public String resetPassword(String id , String email) {
User user = userMapper.selectUserByIdAndEmail(id, email);
if (user == null) {
throw new IllegalArgumentException("์ฃผ์ด์ง ์ ๋ณด์ ํด๋นํ๋ ์ฌ์ฉ์ ์ ๋ณด๊ฐ ์์ต๋๋ค.");
} else if (id == null || id.isEmpty() || email == null || email.isEmpty()) {
throw new IllegalArgumentException("์์ด๋์ ์ด๋ฉ์ผ์ ๋ชจ๋ ์
๋ ฅํด์ผ ํฉ๋๋ค.");
}
// ์์ ๋น๋ฐ๋ฒํธ ๋ง๋ค๊ธฐ
String resetPassword = RandomPassword.generatePassword(8,16);
// ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ - ์ํธํ ์๋์ DB์ ๊ทธ๋ฅ ๋น๋ฐ๋ฒํธ ์ ์ฅ๋๋ฒ๋ฆผ
userMapper.updateResetPassword(id,resetPassword);
return resetPassword;
}
๐ ์ํ๋ ๊ฒฐ๊ณผ
DB์๋ ์ํธํ๋ ๊ฐ์ด ์ ์ฅ๋์ด์ผํ๊ณ ์ด๋ฉ์ผ์๋ ์ํธํ ์ฒ๋ฆฌํ์ง ์์ ๊ฐ์ด ๋ณด๋ด์ ธ์ผํ๋ค
๐ ํด๊ฒฐ๋ฐฉ๋ฒ
1๏ธโฃ service ์ ์คํ๋ง ์ํ๋ฆฌํฐ ์ํธํ ์ฒ๋ฆฌ์ธ passwordEncoder ์ฌ์ฉ
// ์์ธ ๋ฐ์ํ๋ฉด ๋กค๋ฐฑ๋์ ์ด์ ์ํ๋ก ๊ฐ๊ฒํ๋ ค๊ณ - ACID
@Transactional
public String resetPassword(String id , String email) {
User user = userMapper.selectUserByIdAndEmail(id, email);
if (user == null) {
throw new IllegalArgumentException("์ฃผ์ด์ง ์ ๋ณด์ ํด๋นํ๋ ์ฌ์ฉ์ ์ ๋ณด๊ฐ ์์ต๋๋ค.");
} else if (id == null || id.isEmpty() || email == null || email.isEmpty()) {
throw new IllegalArgumentException("์์ด๋์ ์ด๋ฉ์ผ์ ๋ชจ๋ ์
๋ ฅํด์ผ ํฉ๋๋ค.");
}
// ์์ ๋น๋ฐ๋ฒํธ ๋ง๋ค๊ธฐ
String resetPassword = RandomPassword.generatePassword(8,16);
// ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ - ์ํธํ ์๋์ DB์ ๊ทธ๋ฅ ๋น๋ฐ๋ฒํธ ์ ์ฅ๋๋ฒ๋ฆผ
userMapper.updateResetPassword(id,passwordEncoder.encode(resetPassword));
return resetPassword;
}
2๏ธโฃ ์ํธํํ์ง ์์ ๋์๋ก ๋ง๋ ์์๋น๋ฐ๋ฒํธ htmlTemplate๋ก ์ ๋ฌ
String email = email1 + "@" + email2;
User user = userService.selectUserByIdAndEmail(id,email);
// ์์๋น๋ฐ๋ฒํธ ๋ง๋ค๊ธฐ + DB์ update
String resetPassword = userService.resetPassword(id,email);
// ์์ ๋น๋ฐ๋ฒํธ๊ฐ resetPassword
model.addAttribute("resetPassword",resetPassword);
// ์ฌ์ฉ์ ์กฐํํ ๊ฐ์ผ๋ก eamil ๋ณด๋ด๊ธฐ
String to = user.getEmail();
String subject = "BookHub ์์๋น๋ฐ๋ฒํธ ๋ฐ๊ธ.";
String html = mailService.resetPasswordTemplate(user);
mailService.sendEmail(to, subject, html);
String html = mailService.resetPasswordTemplate(resetPassword);
userServcie.resetPassword(id,email); ์ resetPassword๋ ์ํธํ ํ์ง ์์ Random์ผ๋ก ๋ง๋ ๋ฌด์์ ์์๋น๋ฐ๋ฒํธ
public String resetPasswordTemplate(String password) throws Exception{
ClassPathResource resource = new ClassPathResource("templates/user/mail/resetPassword.html");
String htmlTemplate = null;
try{
htmlTemplate = StreamUtils.copyToString(resource.getInputStream(), StandardCharsets.UTF_8);
} catch (IOException ex) {
System.err.println("์ด๋ฉ์ผ ํ
ํ๋ฆฟ์ ๋ก๋ํ๋ ๋์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.");
ex.printStackTrace();
}
return htmlTemplate.replace("PASSWORD", password);
}
<tr>
<td align="center" style="padding: 20px; font-size: 24px; font-weight: bold;">
์์ ๋น๋ฐ๋ฒํธ๊ฐ ๋ฐ๊ธ ๋์์ต๋๋ค.
</td>
</tr>
<tr>
<td align="center" style="padding: 10px; font-size: 32px; font-weight: bold; color: #333; background-color: #ffffff; border-radius: 5px; margin: 10px;">
์์๋น๋ฐ๋ฒํธ : <span >PASSWORD</span>
</td>
</tr>
<tr>
<td align="center" style="font-size: 16px; padding: 30px;">
<p>์ ๊ณตํด๋๋ฆฐ ๋น๋ฐ๋ฒํธ๋ ์์ ๋น๋ฐ๋ฒํธ์
๋๋ค</p>
<p>๋ก๊ทธ์ธ ํ์ ํ์ ๋ง์ด ํ์ด์ง์์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํ ๋ค์ ์ฌ์ดํธ๋ฅผ ์ด์ฉํด์ฃผ์ธ์</p>
<p>๋ฌธ์ ์ฌํญ์ด ์์ผ์๋ฉด ์ธ์ ๋ ์ง ์ ํฌ์๊ฒ ์ฐ๋ฝ ์ฃผ์ธ์.</p>
</td>
</tr>
๐ ๊ฒฐ๊ณผ
1๏ธโฃ ๋น๋ฐ๋ฒํธ ์ฐพ๊ธฐ์
2๏ธโฃ ์์ ๋น๋ฐ๋ฒํธ ๋ฐ๊ธ ์๋ฃ
3๏ธโฃ ๋ฐ๊ธ๋ ๋น๋ฐ๋ฒํธ๋ก ๋ก๊ทธ์ธ
4๏ธโฃ ์์๋น๋ฐ๋ฒํธ ์ํธํ DB์ ์ฅ ํ์ธ