spring op: config 성명 식 설정
3353 단어 spring
/**
* RequiresPermissions
* ,
*/
@Component
public class MethodSecurityInterceptor {
public void permitCheck(JoinPoint jp) {
Method method = ((MethodSignature) jp.getSignature()).getMethod();
RequiresPermissions permission = method.getAnnotation(RequiresPermissions.class);
if (null != permission) {
Subject subject = SecurityUtils.getSubject();
String[] permits = permission.value();
for (String permit : permits) {
subject.checkPermission(permit);
}
}
}
}
package org.apache.shiro.authz.annotation;
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface RequiresPermissions {
/**
* The permission string which will be passed to {@link org.apache.shiro.subject.Subject#isPermitted(String)}
* to determine if the user is allowed to invoke the code protected by this annotation.
*/
String[] value();
/**
* The logical operation for the permission checks in case multiple roles are specified. AND is the default
* @since 1.1.0
*/
Logical logical() default Logical.AND;
}
[color=red]public * cn.focus.dc.cms.auth.service..*.*(..)[/color]
요약:
--------------------------------------------------------------------------------
1. pointcut 은 하나의 인터페이스 에 정의 할 수 있 습 니 다.인터페이스 에서 pointcut 를 정의 할 때 인터페이스 실현 류 의 구체 적 인 위치 에 관심 을 가지 지 않 고 차단 되 는 인터페이스 와 방법 위 치 를 정의 해 야 합 니 다.
2. 흔히 볼 수 있 는 상황:
첫 번 째 상황: x. y. service.. * Service. * (..)
x. y. service: 가방 "x. y. service" 표시
x. y. service.: 가방 "x. y. service" 와 그 하위 가방 을 나타 낸다. 예 를 들 어 "x. y. service. abc", "x. y. service. def", "x. y. service. ghi", "x. y. service. jkl".
* Service: 인터페이스 (또는 인 터 페 이 스 를 실현 하지 못 한 클래스 를 정의 하려 면 cglib 프 록 시 를 사용 해 야 합 니 다) 표현 식 을 사용 해 야 합 니 다.Service 로 끝 나 는 모든 클래스 나 인 터 페 이 스 는 Service 로 끝 나 는 모든 패키지 이름 이 아 닙 니 다.
* (..): 방법 명, 방법 매개 변수 표현 식 을 정의 합 니 다.임의의 방법의 이름, 임의의 방법 매개 변수.
두 번 째 상황: com. xyz. service. *. * (..)
com. xyz. service: 패키지 "com. xyz. service" 정의
*. * (..): 임의의 인터페이스 (또는 인 터 페 이 스 를 실현 하지 못 한 클래스 를 정의 하려 면 cglib 프 록 시 를 사용 해 야 합 니 다), 임의의 방법, 임의의 매개 변 수 는 service 패키지 에서 정의 하 는 임의의 방법 으로 실 행 됩 니 다.
[color = red] 세 번 째 상황: com. xyz. service.. *. * (..)
com. xyz. service: 패키지 "com. xyz. service" 정의
com. xyz. service..: 패키지 "com. xyz. service" 및 하위 패키지 정의
*. * (..): 임의의 인터페이스 (또는 인 터 페 이 스 를 실현 하지 못 한 클래스 를 정의 하려 면 cglib 프 록 시 를 사용 해 야 합 니 다), 임의의 방법, 임의의 매개 변 수 를 사용 해 야 합 니 다. [/ color]
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.