![](/img/trans.png)
[英]JBoss Picketlink - Authentication fails with custom User model
[英]Custom authentication in JBoss
在我的web.xml中有這個:
<security-constraint>
<display-name>Amministrazione</display-name>
<web-resource-collection>
<web-resource-name>wrcollAdmin</web-resource-name>
<description/>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<description/>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.htm</form-login-page>
<form-error-page>/login.htm</form-error-page>
</form-login-config>
</login-config>
允許我保護Web應用程序的安全區域。
因此,例如,我被重定向到/login.htm嘗試訪問/admin/page.htm。
然后,我有了一個JSF2表單,其中包含用戶名和密碼的輸入字段。 登錄按鈕觸發控制器中的“ login()”方法,例如:
public void login() throws IOException {
FacesContext context = FacesContext.getCurrentInstance();
ExternalContext externalContext = context.getExternalContext();
// HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();
logged = false;
// request.login(username, password);
if ( users.get(username)!= null && users.get(username).equals(password) ) {
logged = true;
externalContext.redirect("/admin/");
} else {
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Failed","Error"));
}
}
現在這顯然不起作用,因為我不知道如何告訴Java EE:“嘿!我告訴你這個用戶是有效的!只要...登錄他!”
我想該API僅支持request.login(),但我不想使用MemoryRealm,JDBCRealm等……我確定了用戶有效性的其他方式!
如果無法通過編程方式登錄用戶,最佳的解決方法是什么? 也許用一對用戶名和密碼創建一個領域,並始終將它們用於request.login()?
您可以為此使用JASPIC認證模塊。 這樣的模塊可以是您的應用程序的一部分,您可以將所有特定於應用程序的邏輯移到那里以驗證用戶。
或者...您可以創建一個特殊的身份驗證模塊,該模塊僅登錄您傳遞給它的任何用戶。 在這樣的模塊中,確實存在一種方法可以說:“只需將該用戶登錄”。 (這是CallerPrincipalCallback)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.