【问题标题】:Spring Security exampleSpring 安全示例
【发布时间】:2014-04-24 10:00:03
【问题描述】:

我正在学习 Spring 并尝试实现 Springs Security。我无法理解它是如何工作的。我阅读了一些教程,从中我理解了以下内容:

  1. 我们必须配置 web.xml 以委托代理和模式
  2. 我们需要在 dispatcher-servlet.xml 中添加拦截

发出请求时会触发拦截,但之后我无法理解它是如何工作的。如果有人可以提供要遵循的步骤列表,那将很有帮助。我正在使用 Hibernate 和 Spring(都带有注释),我想使用 Hibernate 对用户进行身份验证。

【问题讨论】:

  • 感谢@Ramesh,它真的非常有用。
  • 欢迎@igniter,继续查看我的博客。谢谢..!!
  • userDetailsS​​erviceImpl 中第 33 行和第 34 行使用的方法(getUserRoles 和 getRoleName)在任何地方都不存在。你是怎么调用这些方法的?
  • 您可以在 Role.java 中找到 getUserRoles 呈现 User.java 和 getRoleName 呈现

标签: java spring hibernate spring-mvc spring-security


【解决方案1】:

【讨论】:

    【解决方案2】:

    我认为您不必再​​为 xml 烦恼了。现在您可以使用基于 Spring Boot + 注释的配置。我发现的最好的教程之一是这个:A good spring security tutorial

    【讨论】:

      【解决方案3】:

      详细的文章可以在这里找到:Code Project
      或者 MVC 和 Spring Security 的教程here

      我试着稍微说明一下这个过程:

      1. 用户向服务器发送 HTTP 请求
      2. 服务器根据web.xml处理请求
      3. web.xml 包含一个过滤器(AKA 拦截器)并通过此过滤器传递请求。
      4. 由于用户未知/未通过身份验证,Spring Security 会尽力获取更多详细信息。
        根据配置,它
        • 发送一个 HTTP 标头,以便在浏览器(客户端)中弹出登录弹出窗口。
        • 重定向到您可以输入用户名和密码的表单。
        • 在服务器和浏览器之间进行大量隐藏交互以保证“单点登录”(SSO)
      5. 除了 SSO,用户输入她/他/它的凭据并创建一个附加请求。
      6. Spring Security 实现登录尝试并对用户进行身份验证
        • 包含用户名和密码的文件
        • spring 配置文件中的内置 XML 结构
        • 一个数据库
        • 一个 LDAP
      7. 授予访问权限后,它会分配必要的角色...
      8. ...并重定向到硬编码的“主页”。 (Spring Security 让您调整这种行为。)
      9. 在您的应用程序中,您可以检查某些操作的授权
      10. .....
      11. 用户单击“注销”或会话到期。随着下一个请求,该过程再次开始。

      注释

      我在这里找到了一个教程 (Link)。

      我理解/假设以下事实:

      • 过滤器仍然必须在 web.xml 中定义。
      • 您可以注释您的类/方法
        • @Controller (API)
        • @Secured (API)
        • @RequestMapping (API)

      我承认我只是给你一个粗略的概述,因为你的问题并不具体。

      请告诉我您想详细了解的内容(重新识别用户、针对不同资源进行身份验证、执行 SSO、在您的网页上创建安全区域……)

      【讨论】:

      • 感谢@Markus 的解释。我会尝试一些代码,然后我会询问是否需要。
      • 嘿@Markus,你能告诉我我们如何使用注释来做到这一点吗?
      • @igniter:我在我的帖子中添加了一个关于注释的部分。如果我应该添加更多详细信息,请告诉我。
      • 你的解释真的很好@Markus。非常感谢。我想了解您最后提到的其他内容。
      【解决方案4】:

      Spring 使用调度程序 servlet 来委派请求。 Spring security 过滤请求并检查是否建立了有效的安全上下文。如果是这样,则将请求传递给调度程序,并将请求转发给相应的控制器。如果没有建立安全上下文,Spring security 会拦截请求,这意味着他可以在 diespatcher servlet 处理它之前操纵请求。在此拦截期间,将分配请求调度程序(Servlet 规范)以将请求转发到登录页面。

      【讨论】:

        猜你喜欢
        • 2011-10-11
        • 2012-01-28
        • 1970-01-01
        • 1970-01-01
        • 2016-03-07
        • 2011-06-21
        • 2018-12-27
        • 1970-01-01
        • 2012-04-12
        相关资源
        最近更新 更多