作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有用户类:
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/
我是一名优秀的程序员,十分优秀!