2014-10-06 3 views
0

스프링 보안을 Spring MVC 애플리케이션에서 사용하고 있습니다. 다른 예제와 달리 UserDetailsService 인터페이스를 구현하고 있습니다. 나는 아래 게시 할 콩을 만들었습니다. 지금은 Access Denied (액세스 거부) 페이지로 직접 리디렉션되었습니다. 나는 엔트리 포인트 (entry-point-ref) 때문이라고 생각한다. 그러나 불행히도 내 HomePage는 내 Loginpage입니다. 드롭 다운 HTML5 메뉴가 있습니다.스프링 보안은 진입 점이 필요하고 빈 유형이 누락되었습니다.

LoginService

@Service("userDetailsService") 
public class LoginServiceImpl implements UserDetailsService{ 
    @Autowired private UserDao userDao; 
    @Autowired private Assembler assembler; 

    @Override 
    @Transactional 
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { 
      UserDetails userDetails = null; 
      User user = userDao.findByName(username); 
      if(user == null) { throw new UsernameNotFoundException("Wrong username or password");} //Never specify which one was it exactly 
     return assembler.buildUserFromUserEntity(user); 
    } 
} 

보안 애플리케이션 컨텍스트 XML은

 <import resource="servlet-context.xml" /> 

<!-- Global Security settings --> 
<security:global-method-security pre-post-annotations="enabled" /> 


<!-- Spring Security framework settings --> 
<security:http use-expressions="true" auto-config="true" disable-url-rewriting="true" entry-point-ref="formAuthenticationEntryPoint"> 
    <security:session-management> 
     <security:concurrency-control max-sessions="5" error-if-maximum-exceeded="false"/> 
    </security:session-management> 
    <security:intercept-url pattern="/*" requires-channel="any" access="permitAll" /> 
    <security:intercept-url pattern="/**" requires-channel="any" access="permitAll" /> 
    <security:custom-filter position="PRE_AUTH_FILTER" ref="siteminderFilter" /> 
</security:http> 
<!-- queries to be run on data --> 
<beans:bean id="formAuthenticationEntryPoint" 
      class="org.springframework.security.web.authentication.Http403ForbiddenEntryPoint" 
     /> 

<bean id="siteminderFilter" class="org.springframework.security.web.authentication.preauth.RequestHeaderAuthenticationFilter"> 
    <property name="principalRequestHeader" value="ROLE_USER"/> 
    <property name="authenticationManager" ref="authenticationManager"/> 
</bean> 

<bean id="preauthAuthProvider" class="org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationProvider"> 
    <property name="preAuthenticatedUserDetailsService"> 
     <bean id="userDetailsServiceWrapper" class="org.springframework.security.core.userdetails.UserDetailsByNameServiceWrapper"> 
      <property name="userDetailsService" ref="LoginServiceImplementation"/> 
     </bean> 
    </property> 
</bean> 

<bean id="LoginServiceImplementation" class="com.WirTauschen.service.LoginServiceImpl"></bean> 

<security:authentication-manager alias="authenticationManager"> 
    <security:authentication-provider ref="preauthAuthProvider" /> 
</security:authentication-manager> 

+0

당신은 자바와 XML에 대한 모두 사용 스프링 S 구성 생태, 혼합하지 않는 것이 좋습니다. 독을 잡아라. – holmis83

+0

나는 또한 userDetailsService와 userDetails를 이미 구현하고 있기 때문에 위와 같은 WebSecurityConfigurer라는 Java 파일을 피하고 싶습니다. 아무것도 손상시키지 않고 java 파일을 삭제할 수 있습니까? 또한 엔트리 포인트와의 거래는 무엇입니까? –

+0

WebSecurityConfigurerAdapter를 XML로 다시 작성할 수 있습니다. 진입 점은 로그인 페이지와 같습니다. – holmis83

답변

0

보안-applicationContext.xml에이 추가 파일

<http pattern="/login" security="none"/> 
+0

/users 인 나의 홈페이지가 나의 로그인 페이지라는 것을 말씀 드리고 싶습니다. 로그인 양식이있는 HTML5 드롭 다운 메뉴가 있습니다. –

관련 문제