gpt4 book ai didi

c# - ASP.NET中如何获取登录用户信息

转载 作者:行者123 更新时间:2023-12-01 08:35:53 25 4
gpt4 key购买 nike

我正在开发 ASP.NET 项目,我试图捕获当前登录的用户信息,例如电子邮件地址。如果使用 cookie 信息,很容易获得该电子邮件地址,但我不想要它。因为那是安全性低的。这是我尝试过的一些代码。

                var identity = (ClaimsPrincipal)Thread.CurrentPrincipal;
string email = identity.Claims.Where(c => c.Type == ClaimTypes.Email)
.Select(c => c.Value).SingleOrDefault();
return Ok(email);

但是我得到了 NULL 响应。我认为这是因为 Token 信息和 (ClaimPrincipal)Thread.CurrentPrincipal 方法。如何使用上面的代码获取当前用户的信息。

最佳答案

您必须在用户进行身份验证后添加自定义声明,以便之后可以使用它。

identity.AddClaim(new Claim(ClaimTypes.Email, user.Email));

以下是向 claim 添加电子邮件的示例。

public ActionResult Login(LoginViewModel model, string returnUrl)
{
if (ModelState.IsValid)
{
var user = _AccountService.VerifyPassword(model.UserName, model.Password, false);
if (user != null)
{
var identity = new ClaimsIdentity(new[] { new Claim(ClaimTypes.Name, model.UserName), }, DefaultAuthenticationTypes.ApplicationCookie, ClaimTypes.Name, ClaimTypes.Role);

identity.AddClaim(new Claim(ClaimTypes.Role, user.Role));
identity.AddClaim(new Claim(ClaimTypes.GivenName, user.Name));
identity.AddClaim(new Claim(ClaimTypes.Email, user.Email));

AuthenticationManager.SignIn(new AuthenticationProperties
{
IsPersistent = model.RememberMe
}, identity);

return RedirectToAction("Index", "Home");
}
else
{
ModelState.AddModelError("", "Invalid username or password.");
}
}

return View(model);
}

关于c# - ASP.NET中如何获取登录用户信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55814905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com