Spring Security需要入口点和缺少的bean类型

时间:2014-10-06 15:28:32

标签: spring-mvc spring-security

我在Spring MVC应用程序上使用Spring Security。与其他示例不同,我正在实现UserDetailsS​​ervice接口。我已经创建了一个bean,我将在下面发布。我现在正好直接重定向到Access Denied页面。我相信这是因为入门点参考。但不幸的是我的主页是我的登录页面,有一个下拉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>

1 个答案:

答案 0 :(得分:0)

将其添加到security-applicationContext.xml文件

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