【问题标题】:How to restrict direct access to secure pages?如何限制对安全页面的直接访问?
【发布时间】:2014-07-21 22:37:52
【问题描述】:

如何在 Java Web 应用程序中限制非管理员角色对安全页面的直接访问?例如,我的应用程序中有 350-500 个 URL,我想隐藏其中的 20-30 个,并且只允许管理员角色访问它们。解决这个问题的最佳方法是什么?这种情况下的最佳做法是什么?

我可能需要通过单开头 URI 对必要的 URL 进行分组吗?或者以某种方式使用web.xml 属性?或者在会话中使用登录用户的保存角色并使用 servlet 过滤器就足够了?这种情况下的问题是我需要整理每个安全 URL。不过以后可能还有很多……

我想所有人都面临这个问题。请给我这种情况的标准和简单的解决方案!提前致谢!

我将不胜感激任何建议和提示!

【问题讨论】:

  • 开始here。这都是 JavaEE 规范的一部分,不要重新发明轮子。

标签: java jsp jakarta-ee servlets web.xml


【解决方案1】:

您可以尝试以下选项

是的,您可以按上面建议的过滤器过滤的单个开头 URI 对必要的 URL 进行分组。


值得一读的 The Java EE 6 Tutorial - Security 探讨了安全概念和示例

【讨论】:

    【解决方案2】:

    你可以看这里..http://viralpatel.net/blogs/tutorial-java-servlet-filter-example-using-eclipse-apache-tomcat/

    您需要以某种方式将它们分组到特定文件夹中。 比您应该在链接中创建一个过滤器。过滤器将获取模式 /admin/ 中的任何内容(假设您的页面将在那里)

    在过滤器中你只需要添加条件..

    If(!admin) {
        /Redirect to anywhere you want
    }
    

    你可以使用更成熟的东西,比如 spring security,这个东西里面有逻辑,你只需要设置你的角色。我认为这会是更好的解决方案,但如果你不熟悉 Spring,会需要更多时间

    希望有帮助

    【讨论】:

      【解决方案3】:

      对于一个非常简单的应用程序,它肯定会有点矫枉过正,但如果你已经使用 SpringFramework,你可以看看 Spring Security。它处理身份验证,有很多可能性,并且可以有非常简单或非常复杂的授权规则。

      Apache Shiro 也是一种更简单(但功能较弱)的替代方案。

      【讨论】:

        猜你喜欢
        • 2011-10-15
        • 2012-01-18
        • 1970-01-01
        • 2017-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-02
        相关资源
        最近更新 更多