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

Thymeleaf无法显示用户名和用户角色

冀冯浩
2023-03-14

我无法在我的索引页面上显示经过身份验证的用户的角色和用户名。我用的是百里叶。所有角色用户都保存在内存中。我正在使用Springmvc编写和Web应用程序

我在我的pom中添加了依赖关系.xml

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

这是我的索引页:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5">
<head>
    <title>Submission result</title>
<link rel="stylesheet"
     href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
    <h1>login ok: welcome </h1>

  <hr>
<p>
<div sec:authorize="hasRole('ROLE_USER')"> 
    User: <sec:authentication property="principal.username" />
    <br><br>
    Role(s): <sec:authentication property="principal.authorities" />
    </div>
</p>

我也希望:

<div sec:authorize="hasRole('_USER')"> or is.Authorized(), but I dont diplay nothin.

这是我的安全配置类:

 public void configure(AuthenticationManagerBuilder auth) throws Exception{

    @SuppressWarnings("deprecation")
    UserBuilder user=User.withDefaultPasswordEncoder();
    auth.inMemoryAuthentication().withUser(user.username("user").password("user").roles("USER"))
    .withUser(user.username("try").password("try").roles("MANAGER", "USER"))
    .withUser(user.username("admin").password("admin").roles("USER", "MANAGER", "ADMIN"));
    
    
}
@Override
protected void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests().anyRequest().authenticated()
    .and()
    .formLogin()
    .loginPage("/login/log").loginProcessingUrl("/login/control/").permitAll()
    .failureUrl("/client/add")//.permitAll()
    .and()
    .logout().permitAll();

我也读了很多关于stackoverlew的问题,但我没有找到答案。我还阅读了官方蒂梅拉夫网站上的指南。

为什么我无法显示:“角色:用户”、“用户名:用户”?

日志中,我没有错误或警告,登录工作正常。

共有2个答案

巫马山
2023-03-14

我找到了这个代码:th: inline="text"

羊舌琛
2023-03-14

示例中的 HTML 无效 (

我认为您需要的语法是:

User: <span sec:authentication="name"></span>
Role(s): <span sec:authentication="principal.authorities"></span>

这在百里香Spring Security文档中有描述。

 类似资料:
  • 问题内容: 在nodeJS中,我正在使用护照模块进行身份验证。我想显示当前登录用户的用户名。 我尝试了以下代码: 和 有关更多信息,请参见:http : //passportjs.org/docs/profile 但这是行不通的。有什么建议? 谢谢 问题答案: 用户(由verify回调提供)在处被设置为请求的属性。 用户的任何属性可以通过对象来访问,你的情况和。 如果您使用的是Express,并且

  • 为什么这显示错误... 第1行错误: ORA-65096:公用用户名或角色名无效

  • 我已经创建了users表。 然后我创建了一个新的帐户前端网页。 我给出了: 用户名:° 帐户创建成功。 现在我可以通过我的用户名和密码登录。然后我可以清楚地看到我的用户名为°在网页。 但当我在终端中运行sql查询时: 我得到的输出是: 我无法看到我的用户名为°。但我可以通过网页登录。 为什么我不能在查询输出中看到我的用户名? 有些用户说我的终端编码有问题。 为了测试这一点,我运行。 输出为° 所以

  • 问题内容: 我的Django应用程序中有一个表单(不在admin中),该表单允许工作人员从下拉列表中选择用户。 问题在于该下拉列表按用户名显示用户,而我希望它从user.get_full_name()中显示其全名,并且仅在不可用时才使用用户名。我只需要在此页面上进行此更改,在其他地方(例如admin),我不在乎它是否使用用户名。 有办法吗? 问题答案: 你可以设置一个自定义,该自定义将返回你想要的

  • 我试图将我当前用户的用户名添加到我的URL(route)中,但是我不断地得到错误。我已经尝试了很多下面提到的方法,但是没有一个有效。以下是我的代码: Layout.html: 当我尝试转到另一个页面时,我收到错误,当我转到设置时收到404。 jinja2.exceptions.UndefinedError jinja2.exceptions.UndefinedError:'user'未定义 MOD