Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 534f032

Browse files
Password encryption, remember-me
1 parent c463511 commit 534f032

File tree

4 files changed

+42
-3
lines changed

4 files changed

+42
-3
lines changed

‎src/main/java/com/naturalprogrammer/spring5tutorial/config/SecurityConfig.java‎

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,36 @@
11
package com.naturalprogrammer.spring5tutorial.config;
22

3+
import org.springframework.beans.factory.annotation.Value;
4+
import org.springframework.context.annotation.Bean;
35
import org.springframework.context.annotation.Configuration;
46
import org.springframework.http.HttpMethod;
57
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
68
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
79
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
10+
import org.springframework.security.core.userdetails.UserDetailsService;
11+
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
12+
import org.springframework.security.crypto.password.PasswordEncoder;
13+
import org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices;
814

915
@Configuration
1016
@EnableGlobalMethodSecurity(prePostEnabled=true)
1117
public class SecurityConfig extends WebSecurityConfigurerAdapter {
18+
19+
private UserDetailsService userDetailsService;
20+
private String rememberMeKey;
21+
22+
public SecurityConfig(UserDetailsService userDetailsService,
23+
@Value("${rememberMeKey}") String rememberMeKey) {
24+
25+
this.userDetailsService = userDetailsService;
26+
this.rememberMeKey = rememberMeKey;
27+
}
28+
29+
@Bean
30+
public PasswordEncoder passwordEncoder() {
31+
32+
return new BCryptPasswordEncoder();
33+
}
1234

1335
// @formatter:off
1436
@Override
@@ -24,7 +46,11 @@ protected void configure(HttpSecurity http) throws Exception {
2446
.anyRequest().authenticated()
2547
.and()
2648
.formLogin().loginPage("/login").permitAll()
27-
.and().logout().permitAll();
49+
.and().logout().permitAll()
50+
.and().rememberMe()
51+
.key(rememberMeKey)
52+
.rememberMeServices(new TokenBasedRememberMeServices(rememberMeKey,
53+
userDetailsService));
2854
}
2955
// @formatter:on
3056
}

‎src/main/java/com/naturalprogrammer/spring5tutorial/services/UserServiceImpl.java‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.springframework.beans.factory.annotation.Value;
88
import org.springframework.boot.context.event.ApplicationReadyEvent;
99
import org.springframework.context.event.EventListener;
10+
import org.springframework.security.crypto.password.PasswordEncoder;
1011
import org.springframework.stereotype.Service;
1112
import org.springframework.transaction.annotation.Propagation;
1213
import org.springframework.transaction.annotation.Transactional;
@@ -31,11 +32,14 @@ public class UserServiceImpl implements UserService {
3132
@Value("${application.admin.password:password}")
3233
private String adminPassword;
3334

35+
private PasswordEncoder passwordEncoder;
3436
private UserRepository userRepository;
3537

36-
public UserServiceImpl(UserRepository userRepository) {
38+
public UserServiceImpl(UserRepository userRepository,
39+
PasswordEncoder passwordEncoder) {
3740

3841
this.userRepository = userRepository;
42+
this.passwordEncoder = passwordEncoder;
3943
}
4044

4145
@PostConstruct
@@ -55,7 +59,7 @@ public void afterApplicationReady(ApplicationReadyEvent event) {
5559

5660
user.setEmail(adminEmail);
5761
user.setName(adminName);
58-
user.setPassword(adminPassword);
62+
user.setPassword(passwordEncoder.encode(adminPassword));
5963
user.getRoles().add(Role.ADMIN);
6064

6165
userRepository.save(user);
@@ -67,6 +71,7 @@ public void afterApplicationReady(ApplicationReadyEvent event) {
6771
public void signup(UserCommand userCommand) {
6872

6973
User user = userCommand.toUser();
74+
user.setPassword(passwordEncoder.encode(user.getPassword()));
7075
user.getRoles().add(Role.UNVERIFIED);
7176

7277
userRepository.save(user);

‎src/main/resources/application.properties‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,5 @@ application.admin.password: some-pass
2424
security.user.name: user@example.com
2525
security.user.password: password
2626

27+
rememberMeKey: topSecret
2728

‎src/main/webapp/WEB-INF/jsp/login.jsp‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,13 @@
3535
<label for="password">Password</label>
3636
<input name="password" id="password" type="password" class="form-control" placeholder="Password" />
3737
</div>
38+
39+
<div class="checkbox">
40+
<label>
41+
<input type="checkbox" name="remember-me"> Remember Me
42+
</label>
43+
</div>
44+
3845
<button type="submit" class="btn btn-primary">Sign In</button>
3946
</form:form>
4047
</div>

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /