0

我正在开发 Seam 应用程序。新创建的用户有一个特殊的场景。当用户帐户由管理员创建时,他应该在第一次登录时更改密码,所以我应该强制用户更改他的密码。在每个页面中,我都必须控制他是否第一次登录,如果是第一次登录,我应该将他重定向到更改密码页面。

我无法在 Seam Framework 中成功实施这个问题。

你对此有什么想法吗?

4

2 回答 2

4

我有两个建议。第一,

在 bean 中创建一个方法,如果用户第一次登录,该方法将返回。然后在你的 pages.xml 中,

    <page view-id="*">
.
.

        <navigation from-action="#{identityBean.isFirstLogin()}">
            <rule if-outcome="true">
                <redirect view-id="/changePasswordPage.xhtml"/>
            </rule>
        </navigation>
   </page>

第二个是使用 'org.jboss.seam.security.loginSuccessful' 事件。

@Observer("org.jboss.seam.security.loginSuccessful")
public void redirectUserToChangePassword() {

     if ( isFirstLogin() ) {

            Redirect redirect = Redirect.instance();
            redirect.setViewId("/changePassword.xhtml");
            redirect.execute();

     }
}

但是,如果您使用接缝安全性,则可以使用此方法。

于 2010-12-16T08:34:13.677 回答
0

您可以实施过滤器并可以在那里检查新创建的用户,然后可以适当地重定向它们。提供自定义 url 模式以相应地过滤请求。

<filter>
    <filter-name>Seam Filter</filter-name>
    <filter-class>org.jboss.seam.servlet.SeamFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>Seam Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
于 2010-12-16T07:38:13.877 回答