当前位置: 首页 > 知识库问答 >
问题:

当用户登录并被重定向到主页时,如何在主页导航栏中隐藏登录链接和显示注销链接?

能修谨
2023-03-14

我正在开发一个基于Spring Boot的web应用程序,主页包含一个带有登录和注册链接的boostrap navbar。

一旦用户登录(通过单击从主页登录链接),他们将再次被重定向到主页(除非他们在spring security启动A&A之前访问任何其他链接)。在重定向,我想隐藏登录和注册链接从navbar和显示注销链接在他们的地方。因为我想在应用程序的所有页面中插入navbar。

我想知道什么是最好的/标准的方法做这当需求是重定向到相同的页面。

我能想到的一个解决方案是检查并从spring security获取user-principal对象,将其传递给thymeleaf模板,并检查如果user-principal对象存在于thymeleaf模板的请求属性中,这意味着用户已经登录,然后我可以隐藏(不呈现)登录和注册链接并显示(呈现)注销链接。如果没有,则显示登录和注册链接并隐藏注销链接。我在想,这样做是正确的吗?这感觉像是一个黑客对我,因此想知道是否有任何标准的方式这样做。

共有1个答案

勾学博
2023-03-14

您可以使用一个Thymeleaf Spring Security扩展:

    <dependency>
        <groupId>org.thymeleaf.extras</groupId>
        <artifactId>thymeleaf-extras-springsecurity5</artifactId>
    </dependency>

添加命名空间

<html xmlns:th="http://www.thymeleaf.org" 
      xmlns:sec="http://www.thymeleaf.org/extras/spring-security">

然后您可以使用它:

        <li sec:authorize="!isAuthenticated()" class="nav-item">
            <a class="btn btn-outline-light" th:href="@{/login}">Login</a>
        </li>
        <li sec:authorize="isAuthenticated()" class="nav-item dropdown">
            <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown"
               aria-haspopup="true" aria-expanded="false" sec:authentication="name">
            </a>
            <div class="dropdown-menu" aria-labelledby="navbarDropdown">
                <a class="pl-3" th:href="@{/password}">Passwort ändern</a>
                <div class="dropdown-divider"></div>
                <a class="pl-3" th:href="@{/logout}">Logout</a>
            </div>
        </li>
 类似资料:
  • 我几乎完成了我的一个项目(对我来说,我是一个初学者)。我想隐藏登录链接时,一个角色(管理员或用户)是登录到数据库。我还想显示一个名为“添加等级”的链接,仅当Admin(Manager)登录时。我正在使用spring boot、Tymeleaf、spring security5和h2&JDBC。 总之,我想隐藏或显示基于用户角色的HTML 更新:当我使用 匿名用户 这是我在navbar中包含或不包含

  • 在我的ionic应用程序中,注册和登录工作正常,数据保存在Firebase中,但我不知道当用户登录或注销时如何在主页中隐藏或显示内容。 在我的身份验证中。服务ts,用户登录时设置uid(用户ID) 家页html 所以我想在authentication.service.ts中使用该信息,并且仅在用户未登录时在我的home.page.html中显示注册按钮。

  • 我在laravel中遇到了一个用户登录的问题,我可以正确地登录用户,但是问题是,在用户登录后,他被重定向到login POST方法,而不是home,我已经将

  • 我刚开始研究Spring安全,遇到了一个问题。在登录表单中输入凭据后,用户将被重定向回登录页。 下面是我配置的SecurityConfiguration.java: } 登录表单:

  • 问题内容: 我想在登录页面中隐藏导航栏。 我确实做到了,但是在其他页面上看不到导航栏。 该代码是My App.jsx文件的一部分。 我在App的状态下创造历史。当此路径名是“ /”或“ / login”时,我隐藏了导航栏。 有用! 但是然后我输入了ID和密码,然后单击登录按钮,获得“成功”结果,并导航到“ / main”。 现在我在主组件中也看不到导航栏。 我怎样才能做到这一点? 对不起,我的英文

  • 记录器文件中的日志- org.springframework.Security.Access.event.loggerlistener-安全授权失败,原因是:org.springframework.Security.Access.accessdeniedexception:访问被拒绝;通过身份验证的主体:org.springframework.security.authentication.ano