SpringBoot 는 Spring Security 를 사용 하여 로그 인 로그아웃 기능 을 실현 합 니 다.
우리 한 명 씩 설명 하 자.
/**
*
* @author Administrator
*
*/
public class AdminUserDateils implements UserDetails {
private static final long serialVersionUID = -1546619839676530441L;
private transient YCAdmin yCAdmin;
public AdminUserDateils() {
}
public AdminUserDateils(YCAdmin yCAdmin) {
if (yCAdmin != null) {
this.yCAdmin = yCAdmin;
}
}
public YCAdmin getyCAdmin() {
return yCAdmin;
}
public void setyCAdmin(YCAdmin yCAdmin) {
this.yCAdmin = yCAdmin;
}
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
Collection<GrantedAuthority> authorities = new ArrayList<>();
SimpleGrantedAuthority authority = new SimpleGrantedAuthority("admin");
authorities.add(authority);
return authorities;
}
//
@Override
public String getPassword() {
return yCAdmin.getAdminPassword();
}
//
@Override
public String getUsername() {
return yCAdmin.getAdminAccount();
}
@Override
public boolean isAccountNonExpired() {
return true;
}
@Override
public boolean isAccountNonLocked() {
return true;
}
@Override
public boolean isCredentialsNonExpired() {
return true;
}
@Override
public boolean isEnabled() {
return true;
}
}
우선 위의 AdminUserDateils 클래스 는 사용자 로그 인 성공 을 설정 한 후 사용자 로그 인 정 보 를 저장 합 니 다.
/**
* Spring-Security
* @author Administrator
*
*/
@Service
public class AdminCustomerDetailsService implements UserDetailsService{
@Autowired
private YCAdminMapper yCAdminMapper;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
YCAdmin ycAdmin= yCAdminMapper.selectYCAdminByAccount(username);
if(ycAdmin==null) {
throw new UsernameNotFoundException(" !!");
}
// AdminUserDateils
AdminUserDateils adminUserDateils = new AdminUserDateils(ycAdmin);
return adminUserDateils;
}
}
이상 AdminCustomerDetailsService 는 사용자 이름 을 찾 는 데 따라 UserDetailsService 인 터 페 이 스 를 실현 해 야 하 는 loadUserByUsername 방법 은 사용자 이름 을 찾 는 것 입 니 다.이것 은 mapper 층,즉 데이터베이스 에 따라 찾 습 니 다.방금 설정 한 AdminUserDateils 류 만 되 돌려 줍 니 다.
public class YhPasswordEncoder implements PasswordEncoder{
@Override
public String encode(CharSequence rawPassword) {
return Des3.encrypt(rawPassword.toString());
}
@Override
public boolean matches(CharSequence rawPassword, String encodedPassword) {
// TODO Auto-generated method stub
return encode(rawPassword).equals(encodedPassword);
}
}
이상 YhPasswordEncoder 가 계승 해 야 할 것 은 저희 PasswordEncoder 가 사용자 암 호 를 설정 하여 암호 화 한 것 입 니 다.이곳 의 암호 화 는 자신의 업무 수요 에 따라 암호 화 를 사용 할 수 있 습 니 다.이렇게 암호 화 형식 을 바 꾸 면 됩 니 다.
public class AdminSecurityConfiguration {
@Configuration
@Order(2)
@EnableWebSecurity
public static class ClientSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private AdminCustomerDetailsService adminCustomerDetailsService;
@Value("${yunhui.admin.urlContext:/houtai}")
private String adminUrlContext;
@Value("${yunhui.admin.noLoginUrls:}")
private String noLoginUrls;
@Override
protected void configure(HttpSecurity http) throws Exception {
// url( yml)
List<String> clientNoLoginUrls = new ArrayList<String>();
if (!noLoginUrls.isEmpty()) {
for (String s : noLoginUrls.split(",")) {
clientNoLoginUrls.add(adminUrlContext + s);
}
}
http.
// url
antMatcher(adminUrlContext + "/**").authorizeRequests()
// url
.antMatchers(clientNoLoginUrls.toArray(new String[0])).permitAll()
.anyRequest().authenticated().and()
//
.formLogin().
// url
loginProcessingUrl("/houtai/login")
//
.loginPage("/houtai/login")
//
.defaultSuccessUrl("/houtai").permitAll().and()
// url
.logout().logoutUrl("/houtai/loginout")
//
.logoutSuccessUrl("/houtai")
.and().rememberMe().and().csrf().disable();;
}
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
// service, ,
auth.userDetailsService(adminCustomerDetailsService).passwordEncoder(new YhPasswordEncoder());
}
}
마지막 으로 설정 입 니 다.먼저 시작 합 니 다.@Configuration
@EnableWebSecurity
주해
하 나 는 저희 가 방금 설정 한 service 입 니 다.
다른 두 변 수 는 파일 설정 에 있 습 니 다.
마지막 으로 폼 인증 을 설정 하면 됩 니 다.input 의 name 은 username 과 password 여야 합 니 다.다시 설정 하지 않 는 한,
action="/houtai/login"은 바로 이렇게 로그 인 을 할 수 있 습 니 다.
HttpSecurity 설정 의 세부 사항 이 있 으 면 질문 할 수 있 습 니 다.
로그 인 성공 과 실패 클래스 를 스스로 설정 할 수 있 습 니 다.
SpringBoot 가 Spring Security 를 사용 하여 로그 인 로그아웃 기능 을 실현 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 Spring Security 로그 인 로그아웃 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.