【问题标题】:Spring-security is not picking up my authentication managerSpring-security 没有选择我的身份验证管理器
【发布时间】:2010-02-03 04:53:13
【问题描述】:

我被弹簧安全配置问题搞砸了

这是我的配置

    <security:global-method-security pre-post-annotations="enabled" />

<security:http auto-config="true">
    <security:intercept-url pattern="/dologin"     access="ROLE_USER,ROLE_ANONYMOUS" />
    <security:form-login login-processing-url="/security_check" login-page="/onlogin" always-use-default-target="false" authentication-failure-url="/onlogin" default-target-url="/home"  />
    <security:logout invalidate-session="true" logout-url="/logout" logout-success-url="/onlogout" />
    <security:remember-me />
    <security:http-basic/>
</security:http>

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

<bean id="anonymousAuthenticationProvider"
    class="org.springframework.security.authentication.AnonymousAuthenticationProvider">
    <property name="key" value="badgerbadgerbadger" />
</bean>

<bean id="daoAuthenticationProvider"
    class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
    <property name="userDetailsService" ref="userDetailsService" />
</bean>

我的问题是,当请求进行身份验证时;我发现只有两个提供者注册。

org.springframework.security.authentication.AnonymousAuthenticationProvider@8fe4ad
org.springframework.security.authentication.RememberMeAuthenticationProvider@1db9cb9

我可能出了什么问题?请描述一下?

【问题讨论】:

    标签: spring-security


    【解决方案1】:

    我相信您需要使用 security:custom-authentication-provider 标签来识别您的自定义提供程序以实现安全性。

    例如:

    <bean id="daoAuthenticationProvider"
         class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
        <security:custom-authentication-provider />
        <property name="userDetailsService" ref="userDetailsService" />
    </bean>
    

    您的anonymousAuthenticationProvider bean 上可能也需要它。

    【讨论】:

    • 嗨,Donal Boyle,我使用的是 spring-security 3.0 版。并且它没有像 这样的标签我试图找出在配置文件中找到安全标签时会发生什么。但是我的加急没有任何结果。现在我选择了完全基于 bean 定义的配置。我会告诉你关于这个主题的任何相关内容
    【解决方案2】:

    尝试以下方法:

    <security:authentication-manager>
        <security:authentication-provider user-service-ref="userDetailsService"/>
    </security:authentication-manager>
    

    【讨论】:

      【解决方案3】:

      在您的 daoAuthenticationProvider 中,您有对 userDetailsS​​ervice 的引用,但我在您的配置中没有看到这样的 bean。
      检查以前的错误消息,我希望在那里看到对丢失 bean 的引用。

      【讨论】:

        【解决方案4】:

        在定义安全认证管理器时使用/定义'id'

        例如:

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

        【讨论】:

          猜你喜欢
          • 2012-12-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-15
          • 2013-01-15
          相关资源
          最近更新 更多