如何在输入中将 <security:authentication property="principal.username"/> 放入 value=" &qu

Posted

技术标签:

【中文标题】如何在输入中将 <security:authentication property="principal.username"/> 放入 value=" " 中?【英文标题】:How to put <security:authentication property="principal.username"/> inside a value=" " in an input? 【发布时间】:2020-05-05 18:16:59 【问题描述】:

有没有人知道我怎么写这条线

<security:authentication property="principal.username"/>

value=""里面

<form:input path="contactName" cssClass="form-control"
                        placeholder="Enter your Contact Name please." value=""/>

如果我像下面显示的代码那样保留它,则用户名显示在输入字段下方而不是(obv)内。

 <form:input path="contactName" cssClass="form-control"
                        placeholder="Enter your Contact Name please." value=""/>
            <security:authentication property="principal.username"/>

非常感谢您的帮助!

关于尼可

【问题讨论】:

【参考方案1】:

你使用百里香吗?

如果是,你可以这样做。

添加pom.xml依赖:

    <!-- https://mvnrepository.com/artifact/org.thymeleaf.extras/thymeleaf-extras-springsecurity5 -->
    <dependency>
        <groupId>org.thymeleaf.extras</groupId>
        <artifactId>thymeleaf-extras-springsecurity5</artifactId>
        <version>3.0.4.RELEASE</version>
    </dependency>

然后:

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

<input placeholder="XXX" th:value="$#authentication.getName()" />

它可以获取用户名,但即使你没有登录它也会返回anonymousUser。 别着急,这是个小问题,可以用thymeleaf的判断表达式。

您可以在以下位置找到更详细的文档: https://www.thymeleaf.org/doc/articles/springsecurity.html

如果这不能解决你的问题,我会跟进。

【讨论】:

对不起,我忘了提,我只是使用“标准”mvc 安全依赖项,我不知道 thymleaf :/【参考方案2】:

如果您使用的是标准 Spring-MVC,那么您可以从控制器本身发送用户名。

在控制器文件中,使用 Principal 作为参数。使用 Principal 类的 getName() 设置模型中的用户名,并将其作为返回语句传递。

    public ModelAndView display(Principal principal)
        ModelAndView mav = new ModelAndView();
        mav.addObject("uname", principal.getName());
        return mav;
    

在 JSP 文件中,使用value="$uname":

    <form:input path="contactName" cssClass="form-control"
                        placeholder="Enter your Contact Name please." value="$uname"/>

【讨论】:

以上是关于如何在输入中将 <security:authentication property="principal.username"/> 放入 value=" &qu的主要内容,如果未能解决你的问题,请参考以下文章

将 java.security.auth.login.config 传递给 Mobilefirst Patform Server

如何在 C++ 中将用户输入验证为双精度?

如何在 C++ 中将输入正确读入 2D 向量 vector<vector<int>>

如何在 C++ 中将文本文件输入转换为数组

如何在 Perl 中将输入文件转换为 UTF-8 编码?

如何在 HTML 日期输入类型中将对象的日期属性显示为默认值