Tac*_*yon 5 c# repository asp.net-core
我目前正在构建一个应用程序,其中每个用户都有一个存储在用户会话存储中的唯一密钥。此密钥用于解密数据库中的用户数据。由于应用程序的存储库层处理数据库查询(使用 Dapper),我希望在那里进行解密。
现在的问题是:我可以从会话存储中检索用户密钥,将其传递给控制器,然后传递给服务,然后在链接的每个方法中使用名称为“key”的参数传递给存储库。有没有办法将密钥从控制器传递到存储库层,而不必在每次调用中手动包含密钥?
如果有比将它存储在会话存储中更好的解决方案,我愿意接受它,如果它能让这更容易。
您可以注入IHttpContextAccessor您的存储库或其他相关业务服务来检索用户密钥。
假设您将HeaderHttp 请求的用户密钥发送为UserKey:
在你的 Startup.cs
public void ConfigureServices(IServiceCollection services)
{
...
services.AddHttpContextAccessor();
...
}
Run Code Online (Sandbox Code Playgroud)
在您的存储库中:
public Repository(IHttpContextAccessor httpContextAccessor, ...)
{
...
var userKey = httpContextAccessor.HttpContext.Request.Headers["UserKey"].FirstOrDefault();
// Or if you send it as cookie:
// var userKey = httpContextAccessor.HttpContext.Request.Cookies["UserKey"];
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
345 次 |
| 最近记录: |