@With(Secure.class)
을 컨트롤러에 추가하면 인증되지 않은 모든 액세스가 차단됩니다. 특정 동작에 대해서만 활성화하거나 컨트롤러에서 활성화 한 후 특정 동작을 제외하고 사용할 수있는 방법이 있습니까?프레임 워크 재생 : 일부 작업에는 로그인을 요구하는 방법 (모두는 아님)
답변
보안 모듈로는이 작업을 수행 할 수 없습니다. Niels가 말한 것처럼 보안 모듈은 솔루션보다 하나의 예입니다. @Before 주석으로 자신 만의 보안 시스템을 구축 할 수 있습니다. 다음은 예입니다.
public class Admin extends Controller {
@Before(unless={"login", "authenticate", "logout", "otherMethod"})
void checkAccess() {
// check the cookie
}
public void login() {
render();
}
public void authenticate(String email, String password) {
// check the params and set a value in the cookie
}
public void logout() {
// delete cookie
}
보안 모듈의 소스 코드를 읽는 것이 좋습니다.
보안 컨트롤러의 @ Before-Tag에 값을 설정할 수 있습니다. 보안 모듈은 솔루션보다 하나의 예입니다.
보안 모듈은 내가 원하는 모든 것을 할 수있을 정도로 확장 성이있는 것 같습니다. 내가 아직 발견하지 못한 다른 단점이 있습니까? –
내가 찾고있는 것을 얻기 위해 Check
주석을 복사하여 Public
주석을 만들었습니다. 그들에게 @Public
주석을 추가하여 로그인하지 않고 지금 With(Secure.class)
를 사용하여 컨트롤러의 조치가 접근 할 수
if (getActionAnnotation(Public.class) != null)
return;
:
package controllers;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface Public {
}
는 내가
Secure.checkAccess
의 시작 부분에 두 줄을 추가했다.
저는 이전에 @Public
솔루션이 상속 된 동작을 처리 할 수 없으므로 다소 제한적이라는 것을 알았습니다. 내가 대신 클래스 레벨의 주석에 갔어요 :
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface AllowGuest {
String[] value();
}
과 Secure.checkAccess()
방법의 시작 부분에이 코드를 추가 :
AllowGuest guest = getControllerInheritedAnnotation(AllowGuest.class);
if (guest != null) {
for (String action : guest.value()) {
if (action.equals(request.actionMethod))
return;
}
}
과 같이 사용할 수 있습니다 @AllowGuest({"list","view"})
이렇게하면 로컬 및 상속 된 작업에 대한 액세스를 허용하고 컨트롤러의 어떤 작업이 안전하지 않은지 확인할 수 있습니다.
컨트롤러에 @With(Secure.class)
주석을 제거하고이 코드를 컨트롤러에 추가하십시오.
@Before(unless={"show"})
static void checkAccess() throws Throwable {
Secure.checkAccess();
}
여기에서 show
은 공개적으로 사용할 수있는 조치입니다.
- 1. 재생 프레임 워크
- 2. 재생 프레임 워크 오류
- 3. ActiveJDBC로 프레임 워크 재생
- 4. 재생 프레임 워크 라우팅 오류
- 5. 재생! GAE의 프레임 워크 템플릿
- 6. 재생 프레임 워크 필수 항목
- 7. 다른 하위 도메인에서 인증 (모두는 아님)
- 8. Ruby App MVC 프레임 워크 (웹이 아님)
- 9. .NET 3.5 프레임 워크를 요구하는 방법?
- 10. 재생 프레임 워크 앱 간 통신
- 11. 재생! 테스트 하위 패키지에서 yaml을로드하는 프레임 워크
- 12. Windows에서 '재생 실행 중'JAVA_HOME 오류 - 프레임 워크 재생
- 13. 일부 C++ 프레임 워크 또는 파이썬으로 시작
- 14. .Net 프레임 워크 찾기
- 15. 방법 젠드 프레임 워크
- 16. Dojo dijit 프레임 워크와 일부 CSS 프레임 워크
- 17. 사용자 정의지도 (일반 Google지도가 아님) 용 프레임 워크/앱
- 18. 주석이없는 스프링 검증 프레임 워크
- 19. 웹 팜 프레임 워크 및 MVC 3 : 동작 방법에서 Https를 요구하는 방법?
- 20. 사이트 용 프레임 워크
- 21. Ruby에서 블록을 요구하는 방법?
- 22. 프레임 워크 장기 실행 작업
- 23. 프레임 워크
- 24. 재생 프레임 워크에서 Json 사용
- 25. 레이크 작업에는 Capistrano를 사용합니까?
- 26. 디버깅 재생! 프레임 워크, JRE 소스 파일 제거하기
- 27. 재생! 프레임 워크 renderJson 특정 필드를 노출하지 않습니다
- 28. 재생! 프레임 워크 : "slugify()"URL에서 항목을 찾으려면 어떻게합니까?
- 29. 재생! 프레임 워크 : 여러 요청에 대한 인스턴스 재사용
- 30. iPhone 미디어 플레이어 프레임 워크 : 여러 동영상 파일을 원활하게 재생
보안 모듈을 사용하여이 작업을 수행 할 수도 있습니다. 내 대답을 확인하십시오. –