Интеграция JSF и Spring Security - проблема ManagedProperty - PullRequest
0 голосов
/ 10 ноября 2011

У меня возникли проблемы во время интеграции Spring Security и JSF 2.0.Перехват защищенных страниц и всего остального работает нормально, но когда я пытаюсь войти в систему пользователя (через мой компонент поддержки), кажется, что мой AuthenticationService, который является ManagedProperty моего LoginBean, является нулевым.Он работал нормально, когда я использовал Spring Security 3.7, теперь я перешел на 3.1.0, и это начало вызывать у меня проблемы.Здесь я прилагаю свой LoginBean и AuthenticationService (внедрение этого интерфейса вызывает исключение NullPointerException).

//LoginBean
@ManagedProperty(value="#{authenticationService}")  
private AuthenticationService authenticationService;

public String login() {
    boolean success = authenticationService.login(name, password);
    if(success) {
        return "/faces/signed/home.xhtml?faces-redirect=true";
    }
    else {
        return "/faces/accessDenied.xhtml?faces-redirect=true";
    }
}

это интерфейс AuthenticationService и его реализация

public interface AuthenticationService {

    public boolean login(String username, String password);

}

реализация

@Service("authenticationService")
public class AuthenticationServiceImpl implements AuthenticationService {

@Resource
AuthenticationManager authenticationManager;

@Override
public boolean login(String username, String password) {
    try{
        Authentication authenticate = 
                authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(
                        username, password));
        if(authenticate.isAuthenticated()) {
            SecurityContextHolder.getContext().setAuthentication(authenticate);
            return true;
        }
    }
    catch (AuthenticationException e) {
        System.out.println("chyba");
    }
    return false;
}

Кстати, я пытался использовать этот учебник http://technology -for-human.blogspot.com / 2011/01 / jsf-2-with-spring-3-protection-with.html Большое спасибоза ответы!

1 Ответ

1 голос
/ 31 января 2012

Была похожая проблема, но вы можете использовать @Resource

Это позволяет вам использовать сервис аутентификации.

@Resource(name = "authenticationService")

private AuthenticationService authenticationService;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...