我正在尝试从我的母版页访问User.Identity,这样我就可以确定哪个用户已登录,但是我无法让它工作。如果我在母版页中导入System.Security.Principal
则没有区别:
<%@ Import Namespace="System.Security.Principal" %>
如果我在Controller中尝试,我可以正常访问它。
知道我需要做什么吗?
答案 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