1

我正在构建一些要嵌入网站的 JSF 接口。我希望允许用户登录网站以查看另一个 JSF 界面,他们可以在其中更新有关网站将提供的服务的详细信息。

我想知道的是,我是否需要从头开始实施登录/注册设施,或者是否已经存在可以轻松使用的现有系统。我使用的数据库是 derby 数据库,应用程序在 GF 服务器上运行。

或者有人可以推荐一些关于使用 JSF 构建自定义用户站点的好资源吗?

抱歉,如果之前有人问过这个问题,而我之前在搜索中错过了这个问题。

4

1 回答 1

1

所有的教科书似乎都提到了容器管理的安全性,但我一直远离它。到目前为止,在我完成的每个应用程序中,我都实现了应用程序管理的身份验证,这为您提供了更多关于如何完成身份验证的灵活性。当然,代价是您将不得不分配几天的时间来实施和摆弄它。

使其变得简单的关键是 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"。这是一个自动登录的链接,所以不必在开发时一遍又一遍地输入我的用户名和密码。)

这应该是你所需要的。

于 2012-10-10T14:19:43.533 回答