如何让当前用户登录我的 AspNet 项目?



我创建了一个简单的AspNet项目(.net框架(,成功登录后我进入了主页。

如果我单击"你好 mail@mail.it!"按钮,我可以访问管理方法并获取我当前的User.Identity.Name(这将是我 mail@mail.it(,因为我的用户管理器登录管理器已填充。 相反,如果我尝试访问 ApiController 中的另一种方法并检索 User.Identity.Name, 用户管理器和登录管理器为空,我的名字为

那是我的 API 控制器:

namespace NameSpace.Controllers.API
{     
public class LoginController : ApiController
{
private ApplicationSignInManager _signInManager;
private ApplicationUserManager _userManager;
public LoginController()
{
}

public LoginController(ApplicationUserManager userManager, ApplicationSignInManager signInManager)
{
UserManager = userManager;
SignInManager = signInManager;
}
public ApplicationSignInManager SignInManager
{
get
{
return _signInManager ?? HttpContext.Current.Request.GetOwinContext().Get<ApplicationSignInManager>();
}
private set
{
_signInManager = value;
}
}
public ApplicationUserManager UserManager
{
get
{
return _userManager ?? HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>(); 
}
private set
{
_userManager = value;
}
}
[HttpGet]
public HttpResponseMessage Check()
{
var username = User.Identity.Name;
if(username != null){
return Request.CreateResponse(HttpStatusCode.OK, username );
}
}
}
}

我是否缺少某些内容,或者还有另一个需要查找当前用户的内容?

你能尝试使用以下方法吗?

if (System.Web.HttpContext.Current.User.Identity.IsAuthenticated)
{
string username = System.Web.HttpContext.Current.User.Identity.Name;
}

更新:

请尝试以下操作以获取 HTTP 上下文:

// get httpContext here
object httpContext;
actionContext.Request.Properties.TryGetValue("MS_HttpContext", out httpContext); 

相关内容

  • 没有找到相关文章

最新更新