我有一个 Angular 项目,我正在使用 .net core 2.o Web API。我将用户信息存储在 Jwt 中,我想记录每个数据库操作。我可以通过发送 jwt 并从服务器端的 request.header 中获取来访问用户信息。但问题是,可以存放在哪里呢?在我的旧 mvc 项目中,我可以存储在会话中。但这个项目是API。我们使用 JWT 而不是会话。我怎样才能在请求开始到结束期间实现存储 UserInfo 。我想从任何地方访问 UserInfo。这是我的动作过滤器:
public class TestFilterAttribute : System.Web.Http.Filters.FilterAttribute, IActionFilter
{
public void OnActionExecuting(ActionExecutingContext context)
{
var requestedUserInfo= context.HttpContext.Request.Headers["Authorization"];
??????????????? = requestedUserInfo;
}
public void OnActionExecuted(ActionExecutedContext context)
{
}
}
我的架构是这样的:
控制器=>服务=>存储库。
因此,我必须在所有方法中将参数作为 UserInfo 发送。所以,我不想将所有方法参数添加为 UserInfo。所以,我想学习摆脱这个问题。
MyController.cs
[HttpGet("GetAllStudents")]
public async Task<ServiceResult>GetAllStudents()
{
var requestedUserId= context.HttpContext.Request.Headers["Authorization"];
return await (studentService.GetAllStudents(requestedUserId));
}
我的服务.cs
public async Task<ServiceResult> GetAllStudents(int requestedUserId)
{
return await unitOfWork.studentRepo.GetAllStudents(requestedUserId);
}
我的存储库.cs
public async Task<List<Student>> GetAllStudents(int requestedUserId)
{
LogOperation(requestedUserId);
return context.Students.ToList();
}
您可以看到每个方法都发送requestedUserId。我怎样才能摆脱这个?
你不存储它,Angular 必须在每个请求中发送 JWT,而 Asp.Net Core webapi 必须打开它,验证它,然后读取从中发出请求的用户。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)