Spring Security 는 데이터베이스 인증 및 사용자 암호 화 및 복호화 기능 을 사용 합 니 다.
1.블 로 그 를 연결 합 니 다https://mp.csdn.net/console/editor/html/104576494환경 을 준비 합 니 다.
2.spring-security.xml 의 설정:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:security="http://www.springframework.org/schema/security"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security.xsd">
<!-- -->
<security:http pattern="/login.jsp" security="none"/>
<security:http pattern="/failer.jsp" security="none"/>
<security:http pattern="/css/**" security="none"/>
<security:http pattern="/img/**" security="none"/>
<security:http pattern="/plugins/**" security="none"/>
<!--
auto-config="true" ,
use-expressions="false" SPEL ( )
-->
<security:http auto-config="true" use-expressions="false">
<!-- pattern=" " access=" , ROLE_USER ROLE_ADMIN " -->
<security:intercept-url pattern="/**" access="ROLE_USER,ROLE_ADMIN"/>
<!-- -->
<security:form-login
login-page="/login.jsp"
login-processing-url="/login.do"//
default-target-url="/index.jsp"
authentication-failure-url="/failer.jsp"
authentication-success-forward-url="/pages/main.jsp"
/>
<!-- -->
<security:csrf disabled="true"/>
<!-- /logout.do , /login.jsp -->
<security:logout invalidate-session="true" logout-url="/logout.do" logout-success-url="/login.jsp" />
</security:http>
<!-- -->
<security:authentication-manager>
<security:authentication-provider user-service-ref="userService">//userService
<!-- , -->
<security:password-encoder ref="passwordEncoder"/>
</security:authentication-provider>
</security:authentication-manager>
<!-- , , -->
<bean id="passwordEncoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/>
<!-- ,
<security:authentication-manager>
<security:authentication-provider>
<security:user-service>
<security:user name="admin" password="{noop}admin" authorities="ROLE_USER"/>
</security:user-service>
</security:authentication-provider>
</security:authentication-manager>
-->
</beans>
3.IUserService 계승 UserDetailsService 인 터 페 이 스 를 정의 합 니 다.UserServiceImpl 을 만들어 서 IUserService 인 터 페 이 스 를 실현 하고 loadUserByUsername 방법 을 덮어 씁 니 다.
@Service("userService")//이 이름 은 spring-security.xml 에 설 정 된 인증 기 이름과 같 아야 합 니 다.
public class UserServiceImpl implements IUserService {
@Autowired
private IUserDao userDao;
@Autowired//
private BCryptPasswordEncoder bCryptPasswordEncoder;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
UserInfo userInfo = null;
try {
userInfo = userDao.findByUsername(username);// , UserInfo
} catch (Exception e) {
e.printStackTrace();
}
// UserDetails
// User user=new User(userInfo.getUsername(),"{noop}"+userInfo.getPassword(),getAuthority(userInfo.getRoles()));//
User user = new User(userInfo.getUsername(), userInfo.getPassword(), userInfo.getStatus() == 0 ? false : true, true, true, true, getAuthority(userInfo.getRoles()));
return user;
}
// List ,
public List<SimpleGrantedAuthority> getAuthority(List<Role> roles) {
List<SimpleGrantedAuthority> list = new ArrayList<>();
for (Role role : roles) {
list.add(new SimpleGrantedAuthority("ROLE_" + role.getRoleName()));
}
return list;
}
/**
*
* @param userInfo
*/
@Override
public void save(UserInfo userInfo) throws Exception {
//
userInfo.setPassword(bCryptPasswordEncoder.encode(userInfo.getPassword()));
userDao.save(userInfo);
}
}
4.항목 을 시작 하여 사용 자 를 추가 하 는 지 테스트 합 니 다.새로 추 가 된 사용자 가 로그 인 에 성공 할 수 있 는 지 확인 합 니 다.총결산
Spring Security 가 데이터베이스 인증 및 사용자 암호 화 및 복호화 기능 을 사용 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 Spring Security 데이터베이스 인증 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 십시오.앞으로 많은 지원 을 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.