asp .net core使用什么获取登录人信息
时间: 2024-10-04 20:01:26 浏览: 23
详解Asp.net Core 使用Redis存储Session
ASP.NET Core 中获取登录用户信息通常是在身份验证完成后进行的。如果你使用的是基于依赖注入的身份验证服务如 `Microsoft.AspNetCore.Authentication.Abstractions.IAuthenticationService` 或者 `Microsoft.AspNetCore.Identity.UserManager<TUser>`,可以按照以下步骤操作:
1. **中间件处理**:在 Startup.cs 的 `ConfigureServices` 配置中添加身份验证服务,并在 `Configure` 部分启用中间件,例如 JWT、Cookie 等:
```csharp
services.AddAuthentication(options =>
{
// 添加你的认证方案配置
})
.AddCookie("Cookies");
app.UseRouting();
app.UseAuthentication();
```
2. **访问当前用户**:在需要获取用户信息的地方,你可以注入 `IHttpContextAccessor` 来访问 HTTP 请求上下文,然后通过 `AuthenticationProperties` 获取登录用户信息:
```csharp
public class UserService
{
private readonly IHttpContextAccessor _httpContextAccessor;
public UserService(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
public async Task<ApplicationUser> GetUserAsync()
{
var context = _httpContextAccessor.HttpContext;
var user = awaitcontext.User.Identity.IsAuthenticated ? await HttpContext.GetUserIdAsync<ApplicationUser>() : null;
return user != null ? await _userManager.FindByIdAsync(user) : null;
}
}
```
在上面的例子中,`_userManager` 是从 `services.AddIdentity<TUser>` 配置中注入的。
阅读全文