Answers:
尝试HttpContext.Current.User
。
公共共享属性Current()作为System.Web.HttpContext的System.Web.HttpContext的
成员摘要:
获取或设置当前HTTP请求的System.Web.HttpContext对象。返回值:
当前HTTP请求的System.Web.HttpContext
您可以像这样在ASP.NET MVC4中获取用户名:
System.Web.HttpContext.Current.User.Identity.Name
'System.Web.HttpContextBase' does not contain a definition for 'Current' and no extension method 'Current' accepting a first argument of type 'System.Web.HttpContextBase' could be found
,建议您像这样进行绝对调用System.Web.HttpContext.Current.User.Identity.Name
。
我用:
Membership.GetUser().UserName
我不确定这是否可以在ASP.NET MVC中使用,但值得一试:)
为了引用用户ID,该ID是使用控制器中的ASP.NET MVC 4内置的简单身份验证创建的,以进行过滤(如果您先使用数据库,而Entity Framework 5则生成代码优先的绑定,并且表的结构如此,这将很有帮助(使用userID的外键),则可以使用
WebSecurity.CurrentUserId
一旦添加using语句
using System.Web.Security;
System.Security.Principal.WindowsIdentity.GetCurrent().Name
适用于MVC 5
。但是,这会拉起带有用户名的域名。即domain \ username
我们可以使用以下代码来获取当前在ASP.Net MVC中登录的用户:
var user= System.Web.HttpContext.Current.User.Identity.GetUserName();
也
var userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name; //will give 'Domain//UserName'
Environment.UserName - Will Display format : 'Username'
用户名:
User.Identity.Name
但是,如果您只需要获取ID,则可以使用:
using Microsoft.AspNet.Identity;
因此,您可以直接获取用户ID:
User.Identity.GetUserId();
该页面可能是您想要的页面:
在MVC3中使用Page.User.Identity.Name
您只需要User.Identity.Name
。
使用System.Security.Principal.WindowsIdentity.GetCurrent().Name
。
这将获得当前登录的Windows用户。
IPrincipal currentUser = HttpContext.Current.User;
bool writeEnable = currentUser.IsInRole("Administrator") ||
...
currentUser.IsInRole("Operator");
var ticket = FormsAuthentication.Decrypt(
HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName].Value);
if (ticket.Expired)
{
throw new InvalidOperationException("Ticket expired.");
}
IPrincipal user = (System.Security.Principal.IPrincipal) new RolePrincipal(new FormsIdentity(ticket));
如果您恰好在Intranet上的Active Directory中工作,请参考以下提示:
(Windows Server 2012)
在Web服务器上运行与AD对话的任何内容都需要进行大量更改和耐心等待。由于在Web服务器与本地IIS / IIS Express上运行时,它以AppPool的身份运行,因此,您必须对其进行设置以冒用任何人访问该网站。
当您的ASP.NET MVC应用程序在网络内部的Web服务器上运行时,如何在活动目录中获取当前登录用户:
// Find currently logged in user
UserPrincipal adUser = null;
using (HostingEnvironment.Impersonate())
{
var userContext = System.Web.HttpContext.Current.User.Identity;
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, ConfigurationManager.AppSettings["AllowedDomain"], null,
ContextOptions.Negotiate | ContextOptions.SecureSocketLayer);
adUser = UserPrincipal.FindByIdentity(ctx, userContext.Name);
}
//Then work with 'adUser' from here...
您必须在下面包装与“活动目录上下文”有关的所有调用,以便将其用作获取AD信息的托管环境:
using (HostingEnvironment.Impersonate()){ ... }
您还必须impersonate
在web.config中将其设置为true:
<system.web>
<identity impersonate="true" />
您必须在web.config中启用Windows身份验证:
<authentication mode="Windows" />
在Asp.net Mvc Identity 2中,您可以通过以下方式获取当前用户名:
var username = System.Web.HttpContext.Current.User.Identity.Name;