1

http-digest の私の Spring-Security 実装: コード:

<bean id="digestFilter" class="org.springframework.security.web.authentication.www.DigestAuthenticationFilter">
      <property name="userDetailsService" ref="userService"/>
      <property name="authenticationEntryPoint" ref="digestEntryPoint"/>
    </bean>

========================================================================

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

========================================================================


<bean id="inMemoryAuthenticationProvider"
         class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
      <property name="hideUserNotFoundExceptions" value="false"/>
     <property name="userDetailsService" ref="inMemoryUserService"/> 
      <property name="messageSource" ref="messageSource"/>
   </bean>

========================================================================


<security:user-service id="inMemoryUserService">
        <security:user name="user" password="user" authorities="ROLE_USER"/>                
        <security:user name="admin" password="admin" authorities="ROLE_ADMIN"/>
        <security:user name="invitado" password="invitado" authorities="ROLE_INVITADO"/>
    </security:user-service>

データベースからユーザーデータを取得するようにカスタマイズしようとしています。Interface クラス UserDetailsS​​ervice からアクセスしてみました。コード:

public class CustomUserDetailsService implements UserDetailsService {

    @Override
    public UserDetails loadUserByUsername(String arg0)
            throws UsernameNotFoundException {

        List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();

        authorities.add(new SimpleGrantedAuthority("ROLE_USER"));

        return new User(
                "pepe", 
                "psw",
                true,
                true,
                true,
                true,
                authorities);
    }

}

セキュリティを実装するときのラベル: user-service、クラス属性がないため、これは機能しません。

ユーザーのデータベースにアクセスする方法は?

4

1 に答える 1

1

この<user-service>タグは、Spring 構成ファイルで明示的にユーザーを定義するために使用されます。UserDetailsService独自の実装 を指定することはできません。

を使用するCustomUserDetailsServiceには、タグを削除して、次のよう<user-service>にカスタムに置き換えるだけです。UserDetailsService

<bean id="inMemoryUserService" class="you.package.CustomUserDetailsService"/>

そして、 pepe:psw でログインできるはずです。

于 2013-06-12T14:44:19.253 に答える