shiro 권한 부여
shiro 권한 부여, 소 시리즈 공유, 소 칼럼 공유, 소 공유.shiro 권한 수여 원리, shiro 권한 수여 분석.
shiro 권한 부여
1.1 권한 부여 절차
1.2 권한 부여 방식
Shiro 는 세 가지 방식 의 인증 을 지원 합 니 다.
프로 그래 밍: if / else 인증 코드 블록 을 작성 하여 완성:
Subject subject = SecurityUtils.getSubject();
if(subject.hasRole(“admin”)) {
/ / 권한 이 있다
} else {
/ / 권한 없 음
}
주해 식: 실행 중인 자바 방법 에 해당 하 는 주 해 를 설치 하여 완성 합 니 다.
@RequiresRoles("admin")
public void hello() {
/ / 권한 이 있다
}
JSP / GSP 탭: JSP / GSP 페이지 에서 해당 탭 을 통 해 완성:
본 교육 프로그램 은 첫 번 째 프로 그래 밍 방식 을 사용 하고 실제 와 웹 시스템 을 통합 하여 사용 한 후 두 가지 방식 을 사용 하도록 권한 을 부여 합 니 다.
1.3 인증 테스트
1.3.1 shiro-permission.ini
저장 권한 이 있 는 프로필 shiro - permission. ini 를 만 듭 니 다. 다음 과 같 습 니 다.
[users]
# zhang 123, role1 role2
zhang=123,role1,role2
wang=123,role2
[roles]
# role1 user create、update
role1=user:create,user:update
# role2 user create、delete
role2=user:create,user:delete
# role3 user create
role3=user:create
ini 파일 에서 사용자, 캐릭터, 권한 의 설정 규칙 은 "사용자 이름 = 비밀번호, 캐릭터 1, 캐릭터 2..." "캐릭터 = 권한 1, 권한 2..." 입 니 다. 먼저 사용자 이름 에 따라 캐릭터 를 찾 은 다음 에 캐릭터 에 따라 권한 을 찾 습 니 다. 캐릭터 는 권한 집합 입 니 다.
1.3.2 권한 문자열 규칙
권한 문자열 의 규칙 은 "자원 식별 자: 작업: 자원 인 스 턴 스 식별 자" 입 니 다. 어떤 자원 의 인 스 턴 스 에 대해 어떤 조작 을 하 는 지 뜻 합 니 다. ":" 자원 / 작업 / 인 스 턴 스 의 분할 문자 입 니 다. 권한 문자열 도 * 마스크 를 사용 할 수 있 습 니 다.
예:
사용자 생 성 권한: user: create 또는 user: create: *
사용자 가 실례 001 을 수정 할 수 있 는 권한: user: update: 001
사용자 인 스 턴 스 001 의 모든 권한: user: *: 001
1.3.3 테스트 코드
테스트 코드 는 인증 코드 와 같 습 니 다. ini 주 소 는 shiro - permission. ini 로 바 뀌 었 습 니 다. 주로 아래 에서 권한 을 부여 하 는 방법 을 배 웁 니 다. 주의: 사용자 인증 이 통과 한 후에 아래 의 권한 수여 코드 를 실행 합 니 다.
@Test
public void testPermission() {
// ini SecurityManager
Factory<SecurityManager> factory = new IniSecurityManagerFactory(
"classpath:shiro-permission.ini");
// SecurityManager
SecurityManager securityManager = factory.getInstance();
// securityManager
SecurityUtils.setSecurityManager(securityManager);
//
Subject subject = SecurityUtils.getSubject();
//
//
// (principals) (credentials)
UsernamePasswordToken token = new UsernamePasswordToken("zhang", "123");
try {
subject.login(token);
} catch (AuthenticationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//
Boolean isAuthenticated = subject.isAuthenticated();
System.out.println(" :" + isAuthenticated);
//
//
System.out.println(" :" + subject.hasRole("role1"));
//
System.out.println(" :" + subject.hasAllRoles(Arrays.asList("role1", "role2")));
// subject.checkRole("role1");
// subject.checkRoles(Arrays.asList("role1", "role2"));
// ,
// subject.checkRole("role22");
//
System.out.println(" :" + subject.isPermitted("user:delete"));
System.out.println(" :" + subject.isPermittedAll("user:create:1", "user:delete"));
//
subject.checkPermission("sys:user:delete");
subject.checkPermissions("user:create:1","user:delete");
}
1.3.4 역할 기반 권한 부여
//
//
System.out.println(" :" + subject.hasRole("role1"));
//
System.out.println(" :" + subject.hasAllRoles(Arrays.asList("role1", "role2")));
대응 하 는 check 방법:
subject.checkRole("role1");
subject.checkRoles(Arrays.asList("role1", "role2"));
위의 check 방법 은 권한 수여 에 실패 하면 이상 을 던 집 니 다:
org.apache.shiro.authz.UnauthorizedException: Subject does not have role [.....]
1.3.5 자원 기반 권한 부여
//
System.out.println(" :" + subject.isPermitted("user:delete"));
System.out.println(" :" + subject.isPermittedAll("user:create:1", "user:delete"));
대응 하 는 check 방법:
subject.checkPermission("sys:user:delete");
subject.checkPermissions("user:create:1","user:delete");
위의 check 방법 은 권한 수여 에 실패 하면 이상 을 던 집 니 다:
org.apache.shiro.authz.UnauthorizedException: Subject does not have permission [....]
소 오리지널 공유http://blog.csdn.net/qq_30739519) 자바 구조 사 교류 군 523988350
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
shiro 권한 부여Shiro 는 세 가지 방식 의 인증 을 지원 합 니 다. 본 교육 프로그램 은 첫 번 째 프로 그래 밍 방식 을 사용 하고 실제 와 웹 시스템 을 통합 하여 사용 한 후 두 가지 방식 을 사용 하도록 권한 을 부여...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.