Jakarta ee 如何使用Tapestry安全性?

Jakarta ee 如何使用Tapestry安全性?,jakarta-ee,tapestry,tynamo,Jakarta Ee,Tapestry,Tynamo,我最近发现了Tapestry 5,它在视图和控制器之间的清晰分离,使用名称标准化而不是XML,这让我直截了当地追求它。坦率地说,我不打算改变,但文档对我来说是不够的 我正在从事的项目必须能够支持多种类型的角色。我必须允许用户认证,根据他们的角色使用特定的服务,以及通过他们的角色访问url 经过一些研究,我发现这是Tynamo项目的一部分 我希望我的服务层完全独立于我的web应用程序,因为我将使用它来实现web服务和其他一些东西。到时候我不想再做一个身份识别系统 我的问题是,如果不使用Tapest

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

我正在从事的项目必须能够支持多种类型的角色。我必须允许用户认证,根据他们的角色使用特定的服务,以及通过他们的角色访问url

经过一些研究,我发现这是Tynamo项目的一部分

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

我的问题是,如果不使用Tapestry,我看不到如何使用Tapestry安全性。他们在Tapestry安全指南上展示的示例对我来说是不够的。我有一个相当粗略的想法,它是如何工作的。 然而,我不知道如何在挂毯5之外使用它

没有Tapestry 5,如何使用Tapestry安全性

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

有没有人能给我解释这些事情或者给我指出正确的方向


谢谢。

Tapestry安全性只是项目顶部的一层薄薄的保护层。它只提供:

  • 通过Tapestry应用程序模块配置Shiro的一种方法
  • 一组Tapestry过滤器,用于对Tapestry页面和操作执行实际的安全检查
  • 是否要声明您的安全性
  • .tml
    文件中支持条件呈现
在该层下面,有一个普通的Shiro实例来完成所有的工作,因此您可以访问安全性(例如通过类),就像您在Tapestry完全不参与的情况下通常会做的那样

基于注释编辑:因此,尽管您可以在任何web应用程序中使用Shiro,Tapestry安全性实际上只是用于Tapestry的包装器。但是,如果您有一个包含Tapestry和其他servlet(如web服务)的应用程序,您应该能够让Tapestry Security完成初始化工作

关于Tapestry过滤器:恐怕没有很好的文档记录。Tapestry过滤器的工作原理非常类似于Servlet过滤器,但正如Tapestry一样,它有自己的过滤器链。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());
}
public void contributeRequestHandler(
最终订单(配置){
添加(“MyFilter”,newmyfilter());
}

非常感谢您的支持。这是否意味着tapestry安全性可以在没有tapestry achitecture的情况下使用,但我需要在我使用的任何应用程序中添加tapestry安全过滤器?或者我应该在服务层中使用Shiro,然后在web应用程序中使用Tapestry安全性来初始化它?我明白了过滤器的要点,我想实现RequestFilter接口并通过添加其贡献方法将其添加到AppModule类中,这样可以扩展Tapestry的功能。@lollancf37:我已经更新了答案。关于过滤器:是的,这就是它们的用途。非常感谢,我现在对事物的理解好多了。