我如何使用Tapestry-Security?

lol*_*f37 4 tapestry java-ee tynamo

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

我正在开发的项目必须能够支持多种类型的角色.我必须允许用户认证,根据他们的角色使用某些服务以及他们的角色对URL的访问.

经过一些研究,我遇到了Tapestry-Security,这是Tynamo项目的一部分.

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

我的问题是我没有看到如何在不使用Tapestry的情况下使用Tapestry-Security.他们在Tapestry-Security指南中展示的例子对我来说还不够.我有一个非常粗略的想法,它是如何工作的.但是我不知道如何在Tapestry 5之外使用它.

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

我也不了解Tapestry项目中AppModule类中使用的过滤系统.是否有文件说明AppModule与过滤系统的工作方式?

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

谢谢.

Hen*_*ing 8

Tapestry-Security只是Apache Shiro项目的一个薄层.它只提供:

  • 一种通过Tapestry应用程序模块配置Shiro的方法
  • 一组Tapestry过滤器,用于对Tapestry页面和操作进行实际的安全检查
  • 注释你应该想声明宣布你的安全
  • 用于支持.tml文件中条件呈现的组件

在该层下面,有一个普通的Shiro实例完成所有工作,因此您可以访问安全性(例如通过SecurityUtils类),就像您通常不会参与Tapestry一样.

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

关于Tapestry过滤器: 我担心这个文档记录不好.Tapestry过滤器与Servlet过滤器非常相似,但由于Tapestry 实现为Servlet过滤器本身,因此它具有自己的过滤器链.Tapestry的过滤器实现RequestFilter接口.

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
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

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

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