我正在尝试对Web应用程序执行基于表单的登录。我正在使用JSF和JBoss v7.1.1。我已按照网页上的说明进行操作http://docs.oracle.com/javaee/6/tutorial/doc/bncbx.html#bncby
这是我的登录页面:
登录以访问安全页面:
<h:panelGrid columns="2">
<h:outputLabel value="Username: " />
<input type="text" id="j_username" name="j_username" />
<h:outputLabel value="Password: " />
<input type="password" id="j_password" name="j_password" />
<h:outputText value="" />
<h:panelGrid columns="1">
<input type="submit" name="submit" value="Login" />
</h:panelGrid>
</h:panelGrid>
<br />
</form>
我已经设法执行了身份验证,但是,当用户被重定向到受限资源时,我需要知道用户使用的登录数据(例如用于成功执行登录的用户名)。有谁知道如何访问此信息?我想在JSF页面的ManagedBean类中使用它。谢谢!
远程用户位于 JSF Bean 中,ExternalContext#getRemoteUser()
可用。
String remoteUser = FacesContext.getCurrentInstance().getExternalContext().getRemoteUser();
// ...
这是在从HttpServletRequest#getRemoteUser()
获得的掩护下,因此这也意味着它在JSF视图中可用,如下所示:
<p>You're logged in as #{request.remoteUser}.</p>
或者,更详细:
<p>You're logged in as #{facesContext.externalContext.remoteUser}.</p>