【问题标题】:Get Current Logged Username in my app在我的应用程序中获取当前记录的用户名
【发布时间】:2018-09-22 18:17:06
【问题描述】:

我想获取当前登录的用户名并将其显示在我的前端。 目前我有一个名为 GetCurrentUser() 的函数,当单击按钮时会调用它。

<button type="submit" onclick="GetCurrentUser()" style="margin-left: 15px;margin-top:10px; margin-bottom: 5px;background-color: black; "value="Submit">Save Selections</button><br>

function GetCurrentUser() {
var usrName ="@HttpContext.Current.User.Identity.Name.ToString()";
//var usrName = '<%HttpContext.Current.User.Identity.Name %>';
//document.getElementById("UserName").innerHTML = usrName;
console.log(usrName);}

我在控制台日志中得到以下输出--> @HttpContext.Current.User.Identity.Name

【问题讨论】:

  • 你试过&lt;%=吗?
  • 喜欢这个 var usrName = ; ? @taha Paksu
  • var usrName = "&lt;%=HttpContext.Current.User.Identity.Name %&gt;";
  • 这是我在控制台日志中尝试时看到的 GetCurrentUserName.js:5
  • &lt;%之后添加=

标签: javascript asp.net razor


【解决方案1】:

如果您看到“HttpContext.Current.User.Identity.Name”的文字输出,那么您的 JS 函数是在您丢失服务器上下文后生成的客户端。

为您提供几个选项:

  1. 通过 ajax 回调控制器获取用户名

  2. 在页面加载时将用户名存储在只读字段中(有点像设置表单值)并在函数调用时通过 jquery 或 js 检索值

  3. 将页面加载时的用户名分配给全局 js 元素,然后在您的函数中使用该元素。

这是 2 和 3 的示例。我认为在您完全理解为什么首先会出现问题之前,您不必担心 #1:

    <div class="btn btn-info" onclick="GetCurrentUser()" style="margin-left: 15px;margin-top:10px; margin-bottom: 5px;background-color: black; " value="Submit">Save Selections</div><br>
    <input type="hidden" name="method2" id="method2" value="@System.Security.Principal.WindowsIdentity.GetCurrent().Name">
    @section scripts {
        <script>
            var globalSettingMethod = '@System.Security.Principal.WindowsIdentity.GetCurrent().Name';
            function GetCurrentUser() {
                alert(globalSettingMethod);
                alert($('#method2').val());
            }
        </script>
    }

【讨论】:

  • @rabyusbeef 用最流行的方法更新答案。
  • @rabyusbeef 我用三种最流行的方式更新了我的答案。然后,我添加了两种更简单的方法的示例。
  • 我尝试了这个建议,但没有成功,但返回了 '@System.Security.Principal.WindowsIdentity.GetCurrent().Name'
  • 不,您只是插入了代码,希望它能够在不了解真正问题的情况下工作。当您尝试在 js 中分配值时,您已经丢失了服务器端上下文。 IE:当您为 js 元素分配值时,它已经通过了会捕获并处理该值的剃刀引擎,而是脚本已经通过客户端传递并且 js 正在分配文字值。它与您提供脚本的结构有关,
【解决方案2】:

我可以通过在文档末尾传递脚本来让用户登录。

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="Example.SiteMaster" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
</head>
<body>
    <form runat="server">
    </form>
    <script>
        var loggedUser = "<%: HttpContext.Current.User.Identity.Name %>";
    </script>
</body>
</html>

希望对你有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多