我最近发现了 Tapestry 5,它的视图和控制器之间清晰分离,使用名称标准化而不是 XML 让我直接选择了它。坦率地说,我不打算改变,但文档对我来说还不够。

我正在从事的项目必须能够支持多种类型的角色。我必须允许用户进行身份验证、根据其角色使用某些服务以及根据其角色访问 url。

经过一番研究后我发现 Tapestry-安全 这是 Tynamo 项目的一部分。

我希望我的服务层完全独立于我的 Web 应用程序,因为我将使用它来实现 Web 服务和其他一些东西。当时机成熟时,我不想再做一个识别系统。

我的问题是,我不知道如何在不使用 Tapestry 的情况下使用 Tapestry-Security。他们在 Tapestry-Security 指南上显示的示例对我来说还不够。我有一个非常粗略的想法,它是如何运作的。但是我不知道如何在 Tapestry 5 之外使用它。

在没有 Tapestry 5 的情况下如何使用 Tapestry-Security ?

我也不了解 Tapestry 项目中 AppModule 类中使用的过滤系统。是否有文档解释 AppModule 与过滤系统配合使用的方式?

有没有人可以向我解释这些事情或为我指出正确的方向?

谢谢。

有帮助吗?

解决方案

Tapestry-Security 只是顶层的薄层 阿帕奇·希罗 项目。它仅提供:

  • 一种通过 Tapestry 应用程序模块配置 Shiro 的方法
  • 一组 Tapestry 过滤器,用于对 Tapestry 页面和操作进行实际的安全检查
  • 注释 您是否想以声明方式声明您的安全性
  • 成分 支持条件渲染 .tml 文件

在该层之下,有一个 Shiro 的普通实例执行所有工作,因此您可以访问安全性(例如通过 安全工具 类)就像你通常会做的那样,如果 Tapestry 根本不参与的话。

根据评论进行编辑: 因此,虽然您可以在您使用的任何 Web 应用程序中使用 Shiro,但 Tapestry-Security 实际上只是与 Tapestry 一起使用的包装器。但是,如果您有一个包含 Tapestry 和其他 servlet(例如 Web 服务)的应用程序,那么您应该能够让 Tapestry-Security 完成初始化工作。

关于 Tapestry 过滤器: 恐怕这没有很好的记录。Tapestry 过滤器的工作方式与 Servlet 过滤器非常相似,但 Tapestry 是 作为 Servlet Filter 本身实现, ,它有自己的过滤器链。Tapestry 的过滤器实现了 请求过滤器 界面。

public class MyFilter implements RequestFilter {

    @Override
    public boolean service(final Request request, final Response response,
            final RequestHandler handler) throws IOException {
        ... //your code
        try {
            return handler.service(request, response);
        } finally {
            ... //your code
        }

    }
}

您可以通过在应用程序模块中贡献它们来将它们添加到过滤器链中:

public void contributeRequestHandler(
            final OrderedConfiguration<RequestFilter> configurations) {
    configuration.add("MyFilter", new MyFilter());
}

其他提示

您可以阅读本文,以了解如何在AppModule类中使用过滤器http://tapestryjava.blogspot.com/2009/12/securing-tapestry-pages-with.html

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top