我有一个运行一些Jersey RESTful服务的Tomcat服务器,我正在使用Apache来托管静态内容。大部分静态内容都是空的,内容是通过RESTful调用填写的,但除了登录页面之外,我不希望任何人能够直接浏览其他静态页面。我们有一个身份验证servlet可以过滤对REST服务的任何请求,但我想知道处理静态内容的最佳方法是什么。如果可能的话,我宁愿不通过Tomcat提供静态内容。
编辑:我应该提一下,只有登录页面才能直接访问,无需过滤等。
答案 0 :(得分:2)
首先想到的是在用户进行身份验证时设置Cookie
然后您可以使用mod_rewrite
在Apache中进行检查。
不确定这是否适合你...
如果您想要一个示例RewriteRule
,请告诉我。
编辑 - 示例规则:
假设静态内容位于/static/
目录中,如果用户尚未登录,则以下 会产生401 Forbidden
(导致Cookie具有值authenticated=true
)
RewriteEngine on
RewriteCond %{REQUEST_URI} ^\/static\/
RewriteCond %{HTTP_COOKIE} !authenticated=true
RewriteRule .* - [L,F]
我使用此方法来指导移动流量,但不是用于限制安全内容,因此我建议进行一些全面的测试。
希望有所帮助。