• Spring Security Taglibs 简介


    1.概述

    在本教程中,我们将了解Spring Security Taglibs,它为访问安全信息和在 JSP 中应用安全约束提供基本支持。

    2.Maven依赖

    首先,让我们将spring-security-taglibs 依赖添加到我们的pom.xml中:

    1. <dependency>
    2. <groupId>org.springframework.securitygroupId>
    3. <artifactId>spring-security-taglibsartifactId>
    4. <version>5.2.2.RELEASEversion>
    5. dependency>

    3. 声明标签库

    现在,在我们可以使用标签之前,我们需要在 JSP 文件的顶部导入标签库:

    <%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>

    添加后,我们将能够使用 sec 前缀指定 Spring Security 的标签。

    4.授权标签

    4.1。 访问表达式

    在我们的应用程序中,我们可能拥有只应为某些角色或用户显示的信息。

    在这种情况下,我们可以使用 授权标签:

    1. <sec:authorize access="!isAuthenticated()">
    2. Login
    3. sec:authorize>
    4. <sec:authorize access="isAuthenticated()">
    5. Logout
    6. sec:authorize>

    此外,我们可以检查经过身份验证的用户是否具有特定角色:

    1. <sec:authorize access="hasRole('ADMIN')">
    2. Manage Users
    3. sec:authorize>

    我们可以使用任何Spring Security 表达式 作为我们的 访问值:

    • hasAnyRole('ADMIN','USER')如果当前用户具有任何列出的角色,则返回true
    • 如果当前主体是匿名用户,isAnonymous()返回true
    • 如果当前主体是记住我的用户,isRememberMe()返回true
    • isFullyAuthenticated()如果用户经过身份验证并且既不是匿名用户也不是记住我的用户,则返回true

    4.2. 网址

    除此之外,我们可以检查被授权向特定 URL 发送请求的用户:

    1. <sec:authorize url="/userManagement">
    2. <a href="/userManagement">Manage Usersa>
    3. sec:authorize>

    4.3. 调试

    在某些情况下,我们可能希望对 UI 进行更多控制,例如在测试场景中。我们可以在application.properties文件中设置spring.security.disableUISecurity = true  , 而不是让 Spring Security 跳过渲染这些未经授权的部分 。

    当我们这样做时,授权标签不会隐藏它的内容。相反,它将使用... 标签来包装内容。然后,我们可以使用一些 CSS 自定义渲染。

    请记住,尽管通过 CSS 隐藏内容并不安全! 用户可以简单地查看源以查看未经授权的内容。

    5.认证标签

    在其他时候,我们会想要显示登录用户的详细信息,比如说“欢迎回来,卡罗尔!” 在网站上。

    为此,我们使用身份验证 标签:

    1. <sec:authorize access="isAuthenticated()">
    2. Welcome Back, <sec:authentication property="name"/>
    3. sec:authorize>

    6. csrfInput标签

    希望我们在我们的应用程序中启用了 Spring Security 的 CSRF 防御!

    如果我们这样做了,那么 Spring Security 已经为我们在标签内插入了一个 CSRF 隐藏表单输入 。

    但是如果我们想使用

    代替,我们可以使用csrfInput手动指示 Spring Security 应该将这个隐藏的输入字段放置在哪里:

    1. <form method="post" action="/do/something">
    2. <sec:csrfInput />
    3. Text Field:<br />
    4. <input type="text" name="textField" />
    5. form>

    如果未启用 CSRF 保护,则此标签不输出任何内容。

    7. csrfMetaTags标签

    或者,如果我们想在 Javascript 中访问 CSRF 令牌,我们可能希望将令牌作为元标记插入。

    我们可以使用csrfMetaTags 标签来做到这一点:

    1. <html>
    2. <head>
    3. <title>JavaScript with CSRF Protectiontitle>
    4. <sec:csrfMetaTags />
    5. <script type="text/javascript" language="javascript">
    6. var csrfParameter = $("meta[name='_csrf_parameter']").attr("content");
    7. var csrfHeader = $("meta[name='_csrf_header']").attr("content");
    8. var csrfToken = $("meta[name='_csrf']").attr("content");
    9. script>
    10. head>
    11. <body>
    12. ...
    13. body>
    14. html>

    同样,如果没有启用 CSRF 保护,此标签将不会输出任何内容。

    8. 结论

    在这篇快速文章中,我们重点介绍了一些常见的 Spring Security taglib 用例。

    而且,正如我们所了解的,它们对于呈现身份验证和授权感知 JSP 内容非常有用。

    一如既往,所有示例都可以在 Github 上找到。

  • 相关阅读:
    【软件测试】JUnit详解
    力矩电机控制基本原理
    【机器学习】随机森林、AdaBoost、GBDT、XGBoost从零开始理解
    mysql代码
    STM32——DHT11温湿度传感器
    ruoyi-vue版本框架(一)如何下载源码,并且在本地启动
    [附源码]Python计算机毕业设计SSM篮球馆预约小程序(程序+LW)
    计算机毕业设计JavaGuiTar网站设计(源码+系统+mysql数据库+lw文档)
    Java架构师学习路线
    C/C++ extern和static的使用
  • 原文地址:https://blog.csdn.net/allway2/article/details/126031632