如何使用 Tapestry-Security?
题
我最近发现了 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