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

2024-04-06

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

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

这是如何用检票口完成的?我已经创建了一个登录页面并扩展了会话类。


框架提供的方式是提供一个授权策略 http://wicket.apache.org/docs/1.4/org/apache/wicket/authorization/IAuthorizationStrategy.html您的应用程序的实例,例如,通过添加到您的应用程序init() method:

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

Wicket Stuff 上有一个 Wickets 授权功能的工作示例here http://wicketstuff.org/wicket/authorization/,它演示了一些相当复杂的东西。对于非常简单的情况,请查看简单页面授权策略 http://wicket.apache.org/docs/1.4/org/apache/wicket/authorization/strategies/page/SimplePageAuthorizationStrategy.html。在非常基础的层面上,可以像这样使用(取自链接的 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而不是该类本身。我做了这样的事情来捕获使用自定义注释进行注释的页面:

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 http://wicket.apache.org/docs/1.4/org/apache/wicket/authorization/IUnauthorizedComponentInstantiationListener.html类似于中所做的简单页面授权策略 http://svn.apache.org/repos/asf/wicket/trunk/wicket/src/main/java/org/apache/wicket/authorization/strategies/page/SimplePageAuthorizationStrategy.java(链接是源代码),应该是这样的:

new IUnauthorizedComponentInstantiationListener()
{
    public void onUnauthorizedInstantiation(final Component component)
    {
    if (component instanceof Page)
    {
        throw new RestartResponseAtInterceptPageException(MySignInPage.class);
    }
    else
    {
        throw new UnauthorizedInstantiationException(component.getClass());
    }
    }
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Wicket 密码保护页面? 的相关文章

  • 如何使 Wicket 的“AjaxLink”无状态?

    我正在构建一个 Wicket Web 应用程序 该应用程序必须处理大量并发请求 我已经设置了一个测试环境和一些 jmeter 脚本来进行负载测试 我注意到如果我将大多数页面设置为无状态 我可以减少应用程序的 CPU 和内存占用 我已将代码添
  • wicket @SpringBean 无法创建 bean

    我有一个关于 Eclipse Wicket Spring Hibernate 的项目 一切正常 除了 当我尝试时 public class SortableContactDataProvider extends SortableDataPr
  • 启用 cookie 后,为什么 jsessionid 出现在 Wicket URL 中?

    我注意到 当用户第一次访问我的网站时 Wicket 生成的 URL 包含jsessionid 而不是依赖 cookie 来获取会话信息 cookie 确实设置成功 如果用户只是重新加载页面 jsessionid不再附加到 URL 中 你可以
  • 如何从 Intellij IDEA 部署 tomcat/webapps 文件夹

    我正在通过 Intellij IDEA Tomcat 集成测试 Web 应用程序 基于 Apache Wicket 在那里我注意到 web 应用程序认为它在 tomcat 的 bin 文件夹中运行 另外当我打电话给ServletContex
  • 检票口标签未更新/保持不可见

    我正在尝试在WebPage交换内容的Panel通过阿贾克斯 它最终看起来像这样 Home gt gt Page gt gt Panel 这是我的页面代码 public MyPage super contentContainer new We
  • DefaultTreeModel 和 Wicket Tree:setAsksAllowsChildren 不起作用

    I m using Wicket s Tree component in a web app But empty folders are shown in a file way Just like this 下面是我使用 DefaultTr
  • 使用 wicket 进行单元测试时如何设置自定义会话?

    我正在尝试在仅允许您登录后访问的 wicket 页面上运行一些单元测试 在我的 JUnit 测试中 如果不设置会话 我无法启动页面或呈现它 你如何设置会话 我在查找有关如何执行此操作的任何文档时遇到问题 WicketTester teste
  • Wicket:如何处理长时间运行的任务

    我已经设置了一个 Wicket Hibernate Spring Web 应用程序 其中涉及收集一些数据 生成并返回一些文件 将其存储在数据库中 创建一些图像并将所有这些显示在网页上 这对于短期运行来说效果很好 但有时收集数据 涉及一些远程
  • 如何从 Wicket 1.5 中的 RequestCycle 获取responsePage?

    在 Wicket 1 4 中我使用了我自己的WebRequestCycle在分离时将页面存储在会话中 以实现 后退 链接 getRequestCycleListeners add new AbstractRequestCycleListen
  • 留意 Wicket 的更新房产

    在我当前的项目中 我们需要实现一种让短信发送者通过上传属性文件来管理检票口消息 国际化的方法 另请参阅这个问题 管理国际化检票口应用程序 https stackoverflow com questions 5140429 administr
  • Wicket 与 GWT - 需要建议

    我正在开发一个基于 Java EE 的 Web 应用程序 我们的时间非常有限 无法提出 alpha 版本并尝试决定要使用的 Web 框架 它必须是易于学习但功能强大的东西 由于开发需要时间 标准 JSP Servlet 在这里不是一个选择
  • 适用于大表大小的 Java wicket dataprovider

    我正在为带有 MySQL 数据库的 EJB3 java 应用程序开发一个 wicket 前端 该网站主要是提交表格和显示表格 对于这些表 我更喜欢创建 IDataProviders 它与 AjaxPagingNavigation 配合得很好
  • YouTube 嵌入:不安全的 JavaScript 尝试访问框架

    我们有一个 Wicket 应用程序 其页面包含嵌入的 Youtube 视频 视频嵌入并播放得很好 但显然它导致页面的其余部分无法渲染 似乎 DOM 元素来了after尽管嵌入在标记中 但嵌入根本不会显示在页面上 查看 Chrome 中的错误
  • 为什么运行多个 Wicket 应用程序会导致 AJAX 冲突?

    当我在同一浏览器中打开两个 Wicket Web 应用程序时 似乎存在 AJAX 冲突 因为我看到整个页面刷新而不是部分刷新 即使应用程序位于不同的服务器和端口号上也是如此 我只使用 Wicket 提供的开箱即用的 JavaScript t
  • 如何在 Wicket 中返回外部 URL 的链接?

    我有一个带有表单的网络应用程序 当我单击保存时 应用程序会创建一些文件并返回一些网址 如何在网页上显示此网址 Use ExternalLink 普通静态链接 new ExternalLink link http some url This
  • 如何处理 Wicket 自定义模型中抛出的异常?

    我有一个带有自定义模型的组件 扩展 wicket 标准模型类 当 Wicket 调用时 我的模型从数据库 Web 服务加载数据getObject 此查找可能会因多种原因而失败 我想通过在带有该组件的网页上显示一条不错的消息来处理此错误 最好
  • 检查 Wicket 中的用户代理

    我使用的是 wicket 1 5 但我无法在getClientInfo 方法 WebRequest RequestCycle get getRequest 我在其他地方看到了这段代码 WebClientInfo clientInfo Web
  • 如何对自定义 Wicket 组件进行单元测试

    鉴于这个非常简单的 Wicket 组件 public class ProductImage extends WebComponent public ProductImage String id Product p super id new
  • 架构问题:GWT 还是 Vaadin 创建桌面应用程序?

    我们计划创建一个提要阅读器 as a Windows 桌面和 iPad 应用程序 正如我们希望能够显示网站 AND 运行 我们自己的 JavaScript在此应用程序中 我们考虑将应用程序作为 HTML CSS JavaScript 交付
  • Wicket、页面堆栈和内存使用情况

    Wicket 应用程序序列化并缓存所有页面以支持有状态组件 以及支持后退按钮 以及其他可能的原因 我有一个使用 setResponsePage 在屏幕之间导航的应用程序 在很短的时间内 会话就会变得相当大 因为所有先前的页面都存储在会话中

随机推荐