0

StackOverflow からのこの投稿 ( JPA で Spring Security を使用する) をフォローしようとしましたが、成功しませんでした。

UserDetailsS​​ervice を実装しました。

import javax.inject.Inject;

import org.springframework.dao.DataAccessException;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;

import com.boss.mrfoods.dao.UserDao;
import com.boss.mrfoods.entity.User;

@Service
public class LoginController implements UserDetailsService {

    @Inject
    private UserDao userDao;

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException, DataAccessException {
        User user = userDao.getForUsername(username);

        System.out.println("USERNAME: " + username);
        System.out.println("USER: " + user);
        System.out.println("ROLES:" + user.getRoles());

        return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), user.getRoles());
    }

}

そして、Spring XML 構成ファイルの 1 つで次のように参照しました。

<debug />

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

<http pattern="/resources/**" security="none" />
<http pattern="/pages/loggedout.xhtml" security="none" />
<http pattern="/pages/timeout.xhtml" security="none" />

<http use-expressions="true">
    <intercept-url pattern="/pages/admin/**" access="hasRole('supervisor')" />
    <intercept-url pattern="/pages/user/**" access="isAuthenticated()" />
    <intercept-url pattern="/**" access="permitAll" />
    <form-login />
    <logout logout-success-url="/pages/loggedout.xhtml" delete-cookies="JSESSIONID" />
    <remember-me />
</http>

<beans:bean id="customUserDetailsService" class="com.boss.mrfoods.controller.LoginController" />

<authentication-manager>
    <authentication-provider user-service-ref="customUserDetailsService">
        <password-encoder hash="plaintext" />
    </authentication-provider>
</authentication-manager>

何も起こりません。例外はなく、私の UserDetailsS​​ervice 実装は呼び出されません。

私がアーカイブしようとしているのは、Spring Security が JPA 接続/トランザクションを使用してユーザー/ロールを見つけることです。構成がありませんか? 例外が発生していない場合は、どこから問題を探し始めればよいでしょうか。

これまでにわかったことは、私の userDao が null であるということです。オブジェクト インジェクションは機能しません。注入はオブジェクトを構築できません。なんで?

ここまで読んでくれてありがとう。

4

1 に答える 1

0

アプリケーションへのログイン方法について詳しく教えてください。ユーザーページに直接アクセスして、ログインページを期待していますか?

このようにログインページを設定してみましたか?

 <form-login
        login-page="/login.html"
        login-processing-url="/j_spring_security_check.action"
        authentication-failure-url="/login_error.html"
        default-target-url="/home.html"
        always-use-default-target="true"/>
于 2013-02-27T20:46:50.873 に答える