gpt4 book ai didi

wicket - 您如何使用 Wicket 密码保护页面?

转载 作者:行者123 更新时间:2023-12-05 00:06:46 30 4
gpt4 key购买 nike

我想用密码保护 Wicket 中的网页,以便用户只有在他/她登录后才能访问它。

我还希望该页面显示登录页面,然后在登录用户试图访问的原始页面后。

这是如何用 wicket 完成的?我已经创建了一个登录页面并扩展了 session 类。

最佳答案

框架提供的方式是提供一个IAuthorizationStrategy应用程序的实例,例如,通过添加到您的应用程序 init()方法:

init() {
...
getSecuritySettings().setAuthorizationStrategy(...)
}

Wicket 授权功能的一个工作示例位于 Wicket Stuff here ,它展示了一些相当复杂的东西。对于非常简单的情况,请查看 SimplePageAuthorizationStrategy .在非常基本的层面上,这可以像这样使用(取自链接的 Javadoc):
SimplePageAuthorizationStrategy authorizationStrategy = new SimplePageAuthorizationStrategy(
MySecureWebPage.class, MySignInPage.class)
{
protected boolean isAuthorized()
{
// Authorize access based on user authentication in the session
return (((MySession)Session.get()).isSignedIn());
}
};
getSecuritySettings().setAuthorizationStrategy(authorizationStrategy);

编辑回复评论

我认为最好的方法是,如果你只是想使用类似 SimplePageAuthorizationStrategy 的东西而不是那个类(class)本身。我做了这样的事情来捕获用自定义注释注释的页面:
IAuthorizationStrategy authorizationStrategy = new AbstractPageAuthorizationStrategy()
{
protected boolean isPageAuthorized(java.lang.Class<Page.class> pageClass)
{
if (pageClass.getAnnotation(Protected.class) != null) {
return (((MySession)Session.get()).isSignedIn());
} else {
return true;
}
}
};

然后你需要注册一个 IUnauthorizedComponentInstantiationListener类似于 SimplePageAuthorizationStrategy 中所做的(链接到源代码),它应该是这样的:
new IUnauthorizedComponentInstantiationListener()
{
public void onUnauthorizedInstantiation(final Component component)
{
if (component instanceof Page)
{
throw new RestartResponseAtInterceptPageException(MySignInPage.class);
}
else
{
throw new UnauthorizedInstantiationException(component.getClass());
}
}
});

关于wicket - 您如何使用 Wicket 密码保护页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2901285/

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