0

我有两个页面:

@AuthorizeInstantiation(Roles.ADMIN)
public class AdminPage extends BasePage {
...

@AuthorizeInstantiation(Roles.USER)
public class UserPage extends BasePage {
...

当没有任何用户登录时,他将被重定向到登录页面。是否有一些选项如何获取重定向页面?因此,如果用户进入管理页面,则登录页面 println 管理页面。如果用户进入用户页面,则登录页面 println 用户页面,当用户进入登录页面时,登录页面 println null

更新:

访问受保护页面时的策略

    getApplicationSettings().setAccessDeniedPage(LoginPage.class);

什么不够清楚?当用户想要访问 UserPage 或 AdminPage 时,他会被重定向到 LoginPage。我想在 loginPage 中打印它是哪个页面

4

3 回答 3

0

我不知道它是否正是你要找的,但你可以看看

RestartResponseAtInterceptPageException.InterceptData.get();

InterceptData 包含有关触发重定向的页面的一些信息。

于 2012-09-17T15:25:53.783 回答
0

您尚未描述如何重定向到登录页面。我猜你实现了 IAuthorizationStrategy 和 IUnauthorizedComponentInstantiationListener?在 onUnauthorizedInstantiation() 的实现中,您可以检查传入的组件(也称为您的页面)上存在哪个注释,并根据此将参数传递给登录页面。

于 2012-09-18T08:49:22.443 回答
0

好,我知道了:

我创建了未授权的ComponentInstantiationListener:

    getSecuritySettings().setUnauthorizedComponentInstantiationListener(
            new IUnauthorizedComponentInstantiationListener() {
                public void onUnauthorizedInstantiation(final Component component) {
                    if (component instanceof Page) {
                        // Redirect to index
                        if (component instanceof AdminPage) {
                            redirectionPage = ((AdminPage) component);
                        } else if (component instanceof BalancerPage) {
                            redirectionPage = ((UserPage) component);
                        }
                        throw new RestartResponseAtInterceptPageException(LoginPage.class);
                        // Or you can just throw the original UnauthorizedInstantiationException
                    } else {
                        component.setVisible(false);
                    }
                }
            });

并在应用程序中设置变量。

然后就在我打电话的登录页面中,Application.getRedirectionPage()所以我知道它是哪个页面

于 2012-09-19T09:05:44.873 回答