我一直在试验这个问题的实质(JSF / Java EE login without required a protected resource)。
如果我使用 BASIC 身份验证设置示例应用程序,其中包含一个公共页面 (/public.xhtml) 和一个受保护页面 (/protected/private.xhtml),并且我有一个从第一页到第二页的链接(如图所示下面),一切正常。
<h:commandButton value="Go Private" action="/protected/private?faces-redirect=true" />
但是,如果我删除login-config
并将上面的按钮替换为:
<h:commandButton value="Go Private" action="#{mybean.login}" />
...和 #{mybean.login} 看起来像这样...
public String login() {
HttpServletRequest request = ...
try {
request.login("known username", "known password");
} catch (Exception e) {
// handle unknown credentials
}
return "/protected/private?faces-redirect=true";
}
在这种情况下,登录成功(不例外request.login()
),但浏览器显示“禁止资源”页面。
任何人都可以阐明这两种情况之间的区别吗?