从母版页访问User.Identity

时间:2011-01-11 23:46:14

标签: c# asp.net asp.net-mvc-2

我正在尝试从我的母版页访问User.Identity,这样我就可以确定哪个用户已登录,但是我无法让它工作。如果我在母版页中导入System.Security.Principal则没有区别:

<%@ Import Namespace="System.Security.Principal" %>

如果我在Controller中尝试,我可以正常访问它。

知道我需要做什么吗?

5 个答案:

答案 0 :(得分:53)

通过HttpContext.Current.User.Identity怎么样?

答案 1 :(得分:8)

<%=HttpContext.Current.User.Identity.Name %>将显示当前用户名 HttpContext.Current.User将获得IPrincipal对象。

这是一个仅在标题中显示用户名的母版页:

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>
        <asp:ContentPlaceHolder ID="TitleContent" runat="server" />
    </title>
    <link href="../../Content/Style.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <div class="page">
        <div id="header">
            <div id="title">
                <h1 id="maintitle">
                    <%=HttpContext.Current.User.Identity.Name %>
                </h1>
            </div>
        </div>
        <div id="main">
            <asp:ContentPlaceHolder ID="MainContent" runat="server" />
        </div>
    </div>
</body>
</html>

答案 2 :(得分:3)

我认为它的工作

HttpContext.Current.User.Identity.Name.ToString()

Page.User.Identity.Name.ToString()

答案 3 :(得分:2)

您可以使用HttpContext.Current.User.Name,但需要记住Master Page代码仅在从属页面代码之后执行。因此,只要您没有在母版页中执行任何安全逻辑,就可以使用此变量。

答案 4 :(得分:0)

您可以从以下网址获取:

  

Context.User.Identity.Name