我正在构建一些要嵌入网站的 JSF 接口。我希望允许用户登录网站以查看另一个 JSF 界面,他们可以在其中更新有关网站将提供的服务的详细信息。
我想知道的是,我是否需要从头开始实施登录/注册设施,或者是否已经存在可以轻松使用的现有系统。我使用的数据库是 derby 数据库,应用程序在 GF 服务器上运行。
或者有人可以推荐一些关于使用 JSF 构建自定义用户站点的好资源吗?
抱歉,如果之前有人问过这个问题,而我之前在搜索中错过了这个问题。
磷
我正在构建一些要嵌入网站的 JSF 接口。我希望允许用户登录网站以查看另一个 JSF 界面,他们可以在其中更新有关网站将提供的服务的详细信息。
我想知道的是,我是否需要从头开始实施登录/注册设施,或者是否已经存在可以轻松使用的现有系统。我使用的数据库是 derby 数据库,应用程序在 GF 服务器上运行。
或者有人可以推荐一些关于使用 JSF 构建自定义用户站点的好资源吗?
抱歉,如果之前有人问过这个问题,而我之前在搜索中错过了这个问题。
磷
所有的教科书似乎都提到了容器管理的安全性,但我一直远离它。到目前为止,在我完成的每个应用程序中,我都实现了应用程序管理的身份验证,这为您提供了更多关于如何完成身份验证的灵活性。当然,代价是您将不得不分配几天的时间来实施和摆弄它。
使其变得简单的关键是 1) 在您的 Facelets 模板中合并所有页面都使用的身份验证权限,以便您始终拥有它,以及 2) 拥有一个保存用户登录状态的 @SessionScoped bean。在我正在处理的应用程序中,模板的顶部如下所示:
<div id="top" class="top" style="min-height: 40px">
<h:form id="formLogout" style="float: right"
rendered="#{userSession.loggedIn}">
<h:outputText
value="Logged In As: #{userSession.sysUser.handle} "
rendered="#{userSession.loggedIn}" />
<p:commandLink value="Logout"
ajax="false"
action="#{userSession.logoutUser}" />
</h:form>
<h:panelGrid style="float: right" rendered="#{!userSession.loggedIn}" >
<h:form id="formLogin">
<h:outputLabel value="User Handle: " />
<p:inputText size="16" value="#{userSession.loginHandle}" />
<h:outputLabel value=" Password: " />
<p:password value="#{userSession.loginPassword}" />
<p:commandButton value="Login"
ajax="false"
action="#{userSession.login}" />
<h:link outcome="/newUser" value=" New User" />
<h:commandLink action="#{userSession.loginAlan}" value="A" />
</h:form>
</h:panelGrid>
<h:link outcome="/index" value="MyWebApp v#{wisApp.ver}" />
<h:outputText value=" " />
</div>
我不会对 UserSession bean 感到厌烦,因为它应该很明显。sysUser属性实际上是从 Derby 数据库中获取的 JPA 实体。
(注意额外的h:commandLink value="A"。这是一个自动登录的链接,所以我不必在开发时一遍又一遍地输入我的用户名和密码。)
这应该是你所需要的。