사용자가 프로필에 연결하는 웹 애플리케이션이 있습니다.JAAS로 인증
보호 된 자원 (이 경우 profile.xhtml 페이지)을 요청할 때 JAAS를 사용하여 사용자를 인증 할 수 있습니다.
인증이 완료되면 프로필 페이지에 액세스 할 수 있습니다. 이는 분명 비어 있습니다 (데이터가 데이터베이스에서 전송되지 않음).
내 문제는 다음과 같습니다. 인증 후 적절한 프로필 (이 사용자 정보가 가득)을 제공하는 방법을 알 수 없습니다. 즉 :
1) 로그인 모듈에서 내 프로필 페이지로 사용자 이름 (이 테이블 사용자의 ID)을 어떻게 잡아낼 수 있습니까?
2) 사용자 튜플의 정보를 제공된 JSF 페이지에 넣어 사용자에게 렌더링 할 수있는 방법은 무엇입니까?
이 내 로그인 모듈 (긴 조금 그래서 그냥 로그인 방법 컷)입니다 : 이것은 profile.xhtml 페이지를 요청 후 팝업 내 양식 인증
@Override
public boolean login() throws LoginException {
if (callbackHandler == null) {
throw new LoginException("Error: no CallbackHandler available "
+ "to garner authentication information from the user");
}
Callback[] callbacks = new Callback[2];
callbacks[0] = new NameCallback("username");
callbacks[1] = new PasswordCallback("password: ", false);
try {
callbackHandler.handle(callbacks);
username = ((NameCallback) callbacks[0]).getName();
password = ((PasswordCallback) callbacks[1]).getPassword();
if (debug) {
System.out.println("Username :" + username);
System.out.println("Password : " + password);
}
if (username == null || password == null) {
System.out.println("Callback handler does not return login data properly");
throw new LoginException(
"Callback handler does not return login data properly");
}
if (isValidUser()) { // validate user.
Profile profile = new Profile();
profile.setUsername(username);
succeeded = true;
return true;
}
} catch (IOException e) {
e.printStackTrace();
} catch (UnsupportedCallbackException e) {
e.printStackTrace();
}
return false;
}
입니다 (나는이 규칙을 구성 web.xml에) :
<form method=post action="j_security_check">
<p>
<span>Username:</span> <br /> <input type="text" name="j_username">
</p>
<p>
<span>Password:</span> <br /> <input type="password"
name="j_password">
</p>
<p>
<input type="submit" value="Login">
</p>
</form>
그리고는이 페이지에 대한 ManagedBean은이다 "profile.java"에 관련된 내 프로필의 JSF 페이지의 일부입니다. 나는 그가 JSF 페이지를 프로필에 인증 후 정보를 얻고 ManagedBean은에 넣어 그것을 제공하는 방법을 모른다 :
<h:form>
<h:outputText value="#{profile.username}"/><br/>
<h:outputText value="#{profile.password}"/><br/>
</h:form>
당신이 코드의 다른 부분이 필요하면 알려 주시기 바랍니다. 가 지금은이 같은 @PostConstruct 주석을 사용하여 내 profile.xhtml 페이지에 일부 정크 정보를 표시 할 수 있어요, 당신이
확인 감사합니다 그러나
@PostConstruct
private void prepareProfile(){
Subject subject = new Subject();
username = String.valueOf(subject.getPrincipals().size());
System.out.println(username);
}
을, 나는 정보를 잡아하는 방법을 무시 그냥 인증 된 사용자로부터. 의견이 있으십니까? 고맙습니다.