spring boot 통합 shiro 안전 프레임 워 크 프로 세 스 분석
제목:springboot 과 thymeleaf 를 공부 한 후에 하나의 프로젝트 연습 자 를 완성 하고 싶 어서 springboot+my batis 와 thymeleaf 를 사용 하여 블 로그 시스템 을 완성 하고 완성 하 는 과정 에서 발생 하 는 문제 들 을 기록 하여 자신의 학습 소감 으로 삼 았 다.여기 서 먼저 군주 TyCoding 의 Tumo 프로젝트 에 감 사 를 드 립 니 다.저 는 너무 요리 가 많아 서 잘 모 르 겠 지만 저 에 게 많은 도움 을 주 었 습 니 다.
shiro 는 작고 유연 한 안전 구조 로 서 인증 과 권한 수여 에 있어 심 플 하지만 간단 하지 않 아 쉽게 사용 할 수 있 습 니 다.다음은 shiro 를 통합 하 는 구체 적 인 절차 입 니 다.
1.의존 도 추가
<!--shiro spring -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.3.2</version>
</dependency>
<!--shiro -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.3.2</version>
</dependency>
2.springboot 콘 솔 에 기본 패키지 의 스 캔 과 실체 류 의 스 캔 주 해 를 추가 합 니 다.본인 이 정말 부주의 해서 try,catch 로 이 잘못 을 쌌 기 때문에 오후 bug 를 찾 아 보 았 습 니 다.ssm 로 shiro 를 통합 하 는 것 도 대체적으로 같 습 니 다.웹 xml 에 설정 정 보 를 추가 해 야 합 니 다.
구체 적 인 절 차 는 대동소이 하 다.
@SpringBootApplication(scanBasePackages = "cn.zhq")
@EntityScan("cn.zhq.system.entity")
public class MyBlogApplication {
public static void main(String[] args) {
SpringApplication.run(MyBlogApplication.class);
}
}
3.사용자 정의 영역개인 적 으로 realm 은 하나의 데이터 소스 에 해당 한다 고 생각 합 니 다.shiro 는 realm 에서 일부 데 이 터 를 얻 고 사용자 의 인증 과 권한 수 여 를 검증 합 니 다.
3.1 usermapper 인터페이스
@Mapper
public interface UserMapper {
/**
* Name
*/
SysUser findByName(String username);
}
3.2 프로필 usermapper.xml
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.zhq.system.mapper.UserMapper">
<select id="findByName" resultType="sysuser" parameterType="String">
select * from tb_user where username = #{username}
</select>
</mapper>
3.3 사용자 정의 realm 을 작성 하고 AuthorizingRealm 계승여기 인증 방법 만 붙 여 놨 어 요.
@Autowired
private UserMapper userMapper;
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
//1. (token)
UsernamePasswordToken upToken = (UsernamePasswordToken) authenticationToken;
String username = upToken.getUsername();
String password = new String( upToken.getPassword());
//2.
SysUser user = userMapper.findByName(username);
//3.
if(user != null && user.getPassword().equals(password)) {
//4.
// : , ,realm
SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(user,user.getPassword(),this.getName());
return info;
}
//5. , null( )
return null;
}
4.shiro 설정 클래스 작성4.1 안전 관리자
// Realm
@Bean
public AuthRealm getRealm() {
return new AuthRealm();
}
//
@Bean
public SecurityManager securityManager(AuthRealm realm) {
//
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(realm);
// realm
securityManager.setRealm(realm);
return securityManager;
}
4.2 필터 공장 설정
@Bean
public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) {
//1.
ShiroFilterFactoryBean filterFactory = new ShiroFilterFactoryBean();
//2.
filterFactory.setSecurityManager(securityManager);
//3. ( , )
filterFactory.setLoginUrl("#");// url
filterFactory.setUnauthorizedUrl("#");// url
return filterFactory;
}
5.controller 작성 방법
@RequestMapping(value="/login")
@ResponseBody
public String login(String username,String password) {
try{
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken uptoken = new UsernamePasswordToken(username,password);
subject.login(uptoken);
return " ";
}catch (Exception e) {
return " ";
}
}
6.로그 인6.1 md5 암호 화 된 비밀번호 가 져 오기
비밀 번 호 는 shiro 가 제공 하 는 Md5 암호 화 방식 을 사용 하기 때 문 입 니 다.번 거 로 움 을 피하 기 위해 암호 화 된 비밀 번 호 를 직접 인쇄 합 니 다.
Md5Hash | ( ) |
System.out.println(new Md5Hash("123456","zhangbo",3).toString());
암호 화 된 비밀 번 호 를 사용 하면 로그 인 에 성공 할 수 있 지만 원본 비밀 번 호 를 사용 하면 로그 인 에 성공 할 수 없습니다.구체 적 인 업무 논리 층 에 사용 자 를 추가 할 때 비밀 번 호 를 암호 화 할 수 있 습 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.