gpt4 book ai didi

c# - 如何在 Asp.net core mvc 的 Controller 中获得自己的用户

转载 作者:行者123 更新时间:2023-11-30 22:54:32 26 4
gpt4 key购买 nike

我有用户类:

public class User : Entity
{

public void AcceptMenu(Menu menu)
{
//AcceptMenu
}
public string Login { get; set; }
public string Password { get; set; }
public string Salt { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}

然后我创建授权逻辑。验证方法如下所示:

      private async Task Authenticate(User user)
{

var claims = new List<Claim>
{
new Claim(ClaimsIdentity.DefaultNameClaimType, user.Login),
new Claim(ClaimsIdentity.DefaultRoleClaimType, user.Role)
};

ClaimsIdentity id = new ClaimsIdentity(claims, "ApplicationCookie", ClaimsIdentity.DefaultNameClaimType, ClaimsIdentity.DefaultRoleClaimType);

await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(id));
}

如您所见,我在 User 中有 AcceptMenu 方法。如何在 Controller 中获取 User 并执行 AcceptMenu 方法?

最佳答案

Controller 具有 IPrincipal 类型的属性 User。您可以使用 User.Identity.Name 获取用户名,但它是经过身份验证的 asp.net 用户名。您可以将此经过身份验证的用户映射到您的用户类别。在 Controller 中

ApplicationUserManager UserManager = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();

ApplicationUser user = await UserManager.FindByEmailAsync(User.Identity.Name);

其中 ApplicationUserManager 是具有身份配置的类,而 ApplicationUser 是此类中的 IdentityUser。但是不是你的db User派生自实体类,应该手动映射

关于c# - 如何在 Asp.net core mvc 的 Controller 中获得自己的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56182278/

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