gpt4 book ai didi

java - Wicket 口和复合 AuthorizationStrategy

转载 作者:行者123 更新时间:2023-11-30 09:40:19 27 4
gpt4 key购买 nike

我不确定我是否清楚这个策略是否有效。在我的应用程序中,我有 2 个单独的登录表单,一个供普通用户使用,第二个仅供管理员使用(不要问为什么,就是这样:))

我想要实现的是正确的重定向。在我的 WebApplication 类中,我有:

init() {
//...ommited some not related code
CompoundAuthorizationStrategy compoundAuthorizationStrategy = new CompoundAuthorizationStrategy();
IAuthorizationStrategy membertPageAuthStrategy = new SimplePageAuthorizationStrategy( MemberTemplatePage.class,
HomePage.class )
{
@Override
protected boolean isAuthorized()
{
//here's my way to define if authorization is completed
}
};

IAuthorizationStrategy adminPageAuthStrategy = new SimplePageAuthorizationStrategy( AdminTemplatePage.class,
AdminLoginPage.class )
{
@Override
protected boolean isAuthorized()
{
//here's my way to define if authorization is completed
}
};

compoundAuthorizationStrategy.add( membertPageAuthStrategy );
compoundAuthorizationStrategy.add( adminPageAuthStrategy );

getSecuritySettings().setAuthorizationStrategy( compoundAuthorizationStrategy );
//...
}

MemberTemplatePage 是登录用户页面的模板,而 AdminTemplatePage 是管理员的模板。现在我虽然如此,但通过这种链式身份验证策略,当我未经授权输入 MemberTemplatePage 时我将被重定向到主页,而当我未经授权进入 AdminTemplatePage 时我将被重定向到 AdminLoginPage,但我一直被重定向到 AdminTemplatePage。无法在 CompoundAuthorizationStrategy 上搜索任何内容,这似乎是我的最佳选择。知道我做错了什么吗?我知道 RoleAuth~ 但那不适合我。

最佳答案

@roby 你可能是对的,在 wicket 源代码中进行了一些搜索后,我在我的代码中进行了以下更改:

init() {
//...ommited some not related code
CompoundAuthorizationStrategy compoundAuthorizationStrategy = new CompoundAuthorizationStrategy();
IAuthorizationStrategy membertPageAuthStrategy = new SimplePageAuthorizationStrategy( MemberTemplatePage.class,
HomePage.class )
{
@Override
protected boolean isAuthorized()
{
if ( /* user not authorized */ )
{
throw new RestartResponseAtInterceptPageException( HomePage.class );
}
return true;
}
};

IAuthorizationStrategy adminPageAuthStrategy = new SimplePageAuthorizationStrategy( AdminTemplatePage.class,
AdminLoginPage.class )
{
@Override
protected boolean isAuthorized()
{
if ( /* user not authorized */ )
{
throw new RestartResponseAtInterceptPageException( AdminLoginPage.class );
}
return true;
}
};

compoundAuthorizationStrategy.add( membertPageAuthStrategy );
compoundAuthorizationStrategy.add( adminPageAuthStrategy );

getSecuritySettings().setAuthorizationStrategy( compoundAuthorizationStrategy );
//...
}

它就像我想要的那样工作:)

关于java - Wicket 口和复合 AuthorizationStrategy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9470613/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com