Как загрузить роли из базы данных для анонимного пользователя в пружинной безопасности 3?

Я использую безопасность Spring 3.0.2, и я не могу найти способ загрузить роли анонимного пользователя от базы данных (у меня есть динамические роли, где роли могут быть даны всем).

Я попытался использовать пользовательский anonymousAuthenticationProvider, но этого поставщика никогда не звонят. Вот моя конфигурация:

<http auto-config="false">
    <logout invalidate-session="true" logout-success-url="/page/welcome" />
    <remember-me />
    <anonymous username="_GUEST_" granted-authority="ROLE_GUEST" key="anonymousKey" />
    <form-login login-page="/page/login" authentication-failure-url="/page/login?fail=1" default-target-url="/page/welcome" />
</http>

<authentication-manager alias="authenticationManager">
    <authentication-provider ref="anonymousAuthenticationProvider"></authentication-provider>
    <authentication-provider user-service-ref="accountDetails">
        <password-encoder ref="passwordEncoder">
            <salt-source user-property="xxxx" />
        </password-encoder>
    </authentication-provider>
</authentication-manager>

<beans:bean id="accountDetails" class="com.mysite.AccountDetailsImpl" />

<beans:bean id="passwordEncoder" class="org.springframework.security.authentication.encoding.ShaPasswordEncoder">
    <beans:constructor-arg value="512" />
</beans:bean>

<beans:bean id="anonymousAuthenticationProvider" class="com.my.site.security.CustomAnonymousAuthenticationProvider">
    <beans:property name="key" value="anonymousKey" />
</beans:bean>

Мой anonymousAuthenticationProvider никогда не называют так, я не могу загрузить пользовательские полномочия из базы данных. Когда я вхожу в систему, мой сервис accountDetails называют, и я могу загрузить роли из базы данных для пользователя, я хочу то же самое для анонимного пользователя.

Как я могу сделать это?спасибо

5
задан Jerome Cance 11 March 2010 в 10:46
поделиться

1 ответ

Похоже, что самый простой способ добиться этого - объявить AnonymousAuthenticationFilter с настраиваемым UserAttribute , который создаст необходимые права доступа:

<http auto-config = "false">
    <anonymous enabled = "false" />
    <custom-filter ref = "myFilter" position = "ANONYMOUS_FILTER" />
    ...
</http>

<beans:bean id = "myFilter" class = "org.springframework.security.web.authentication.AnonymousAuthenticationFilter">
    <beans:property name = "key" value = "anonymousKey" />
    <beans:property name = "userAttribute" ref = "myAttributes" />
</beans:bean>

<beans:bean id = "myAttributes" class = "..." />
3
ответ дан 15 December 2019 в 06:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: