나는 역할 벌금을 인식, 또는 (예상대로) 사용자가 역할을하지 않은 경우 거부 할 것 @Secured 표기@PreAuthorize가보고있는 역할을 어떻게 확인할 수 있습니까?
@Secured("Role_Admin")
public void dummyMethod(HttpServletRequest request) ...
로 고정 내가 처음에했던 일부 봄 컨트롤러 방법을 가지고있다. 그러나 @PreAuthorize 주석을 사용하기 위해 전환을 시도했지만 지금은 모든 것이 거부되었습니다. 나는 @PreAuthorize 주석을 제거하고, 뭔가를 할 경우
@PreAuthorize("hasRole('Role_Admin')")
public void dummyMethod(HttpServletRequest request) ...
는, true를 돌려줍니다
request.isUserInRole("Role_Admin")
을 말한다. 주석에 남겨두고 액세스 거부 처리기에서 사용자의 역할 을 확인하면 사용자에게 'Role_Admin'권한이 부여 된 것을 볼 수 있습니다.
@PreAuthorize 뒤에있는 코드가 어떤 역할/권한을 갖고 있는지 확인하지 못했습니다. 아무도 봄 보안 강좌를 확인할 수 있습니까?
내가 모든 것을 구성하는 자바를 사용하고
편집 할 수 있습니다. 그래서 다음과 같습니다 내 AccessDeniedHandler을 발로하지 있기 때문에 아래의 대답에 내 대답에
@Configuration
@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true)
public class SecurityConfigurator extends GlobalMethodSecurityConfiguration { ...
, 나는 @Secured로 전환하고 있습니다 이유입니다. 내가 그렇게하도록 강요 할 수 있다면, 나는 그것에 충실 할 것이다. @PreAuthorize가 핸들러를 시작합니다.
EDIT2
같이, 안드레이 지적 내 구성이 정의했습니다. 그것은 변화를 가져 오지 않았습니다.
@Bean
public SimpleMappingExceptionResolver resolver() {
SimpleMappingExceptionResolver resolver = new SimpleMappingExceptionResolver();
resolver.setExcludedExceptions(AccessDeniedException.class);
Properties mappings = new Properties();
mappings.put("org.springframework.web.servlet.PageNotFound", "p404");
mappings.put("org.springframework.dao.DataAccessException", "dataAccessFailure");
mappings.put("org.springframework.transaction.TransactionException", "dataAccessFailure");
resolver.setExceptionMappings(mappings);
return resolver;
}
보안 구성 XML을 게시 할 수 있습니까? –
아마, [이 SO 게시물] (http://stackoverflow.com/questions/21171882/spring-security-ignoring-access-denied-handler-with-method-level-security)를 보았지만 나는 그것을 나눠 줘. –
톱. 내 구성에 뭔가 추가하려고했지만 ExceptionHandler는 여전히 AccessDeniedHandler 대신 예외를 가져옵니다. 질문에 구성을 추가하는 중입니다. – pChip