3

Java EE 웹 서비스 응용 프로그램을 만들고 있습니다. 의 SessionContext에 UserPrincipal를 저장하고 그것을하는 방법이Java EE에서 로그인을 구현하는 방법은 무엇입니까?

를 사용하여 프로그래밍 방식으로 호출 될 때마다 검색하여 자바 EE 웹 서비스 응용 프로그램에서 구현 될 로그인에 대한 더 나은

입니다 : 내가 로그인을 구현하는 방법에 대한 확실하지 않다

예를 들면

또는

을 통과하는 것이 좋습니다,의 SessionContext에서 UserPrincipal를 저장하고 트랜잭션에 사용에서 사용자 ID를 검색하는 것이 좋은 프로그래밍 습관이며, 고객 A는 제품을 구입하는 말 매번 트랜잭션마다 토큰을 사용하고 로그인 한 모든 사용자 및 구매할 때 토큰을 사용하여 사용자 ID를 검색 할 수 있도록 테이블에서 발행 된 토큰?

+0

JEE API Java 인증 및 권한 부여 서비스 자세한 정보 및 샘플은 http://docs.oracle.com/javase/1.5.0/docs/guide/security/jaas/JAASRefGuide.html#Sample –

답변

4

가장 일반적인 방법은 (세션 빈을 범위로, 예를 들어) 다음 세션 사용자 데이터 또는 사용자 역할에 저장하는 DB와 사용자 정보 (UNAME, 비밀번호), 를 인증 한 번 로그인하는 것입니다.

사용자 데이터 \ 사용자 역할을 지속하고

public class UserSession implements Serializable { 

    // login-related fields 
    protected String userName; 
    protected String userPassword; 
    protected Object requestInfo; 


    //session related info 
    private Object sessionInfo ; 
    private boolean loggedIn; 
    /** This method tries to login the user 
    */ 
    private login (userName,password){ 
    loggedIn = callDbAndAuthenticateUser(userName,password) 
    } 

세션에 그 콩 범위를 정의하고 세션으로 업데이트 그것을 (서버 측 또는 클라이언트 측)을 필요로 할 때 액세스 할 수 있습니다 그 방법

다른 bean에서 또는 jsf 페이지에서 직접 getter isLoggedIn을 점검하여 사용자가 기록되었는지 확인하십시오.


편집 당신이 원격으로 호출하는 방법에 자격 증명을 전달할 수 있습니다

당신은 당신이 database.Those 문제를 액세스 할 때 EJB의 \의 RMI를 사용하여 반드시 관련 \ 동일하지 않습니다, 또는 로컬 서버에서 권한을 처리하고 로컬 인증 메커니즘이 원격 메소드를 호출하게 할 수 있습니다.

+0

매번 사용자가 인증되는지 여부를 확인하려면 어떻게해야합니까? – nkvp

+0

@nkvp는 bean의 loggedIn 속성을 사용합니다. 편집 된 대답 –

+0

그래서 우리는 웹 파트에서 자바 빈을 사용해야합니다 ... ejb 부분의 인증은 어떻게됩니까? – nkvp

2

AFAIK, 가장 좋은 방법은 USER_ID를 DB에 저장하는 것입니다.

관련 문제