我只是想保存包含安全令牌的 cookie,但它们不会保留在浏览器中。这是我AuthController保存 cookie 的方法(简化):
[AllowAnonymous]
[HttpPost("authorize")]
[ProducesResponseType((int)HttpStatusCode.OK)]
public async Task<IActionResult> AuthorizeAsync()
{
//generating access token ommited for brevity
SetTokenCookie(accessToken);
return Ok(userIdentity);
}
Run Code Online (Sandbox Code Playgroud)
及SetTokenCookie方法:
private void SetTokenCookie(string accessToken)
{
var options = _jwtOptions.AccessToken;
var cookieOptions = new CookieOptions()
{
HttpOnly = true,
IsEssential = true,
Secure = false,
SameSite = SameSiteMode.Strict,
Domain = options.Issuer, //http://localhost:3394 by default
Expires = DateTime.UtcNow.AddDays(14)
};
Response.Cookies.Append(options.Name, accessToken, cookieOptions);
}
Run Code Online (Sandbox Code Playgroud)
现在,当我分析 Api 的响应时,我发现Set-Cookieheader 和 token 本身都很好:
解码后的令牌:
{
"id": "70132f61-4d83-4772-9685-7a77a9204685", …Run Code Online (Sandbox Code Playgroud) 鉴于 EF Core 已经实现了存储库模式 ( DbSet) 和工作单元 ( DbContext),我可以DbSet像这样直接在我的存储库中使用吗?
public class MyEfRepository : IMyRepository
{
private readonly DbSet<MyModel> _myModels;
public MyEfRepository(MyDbContext ctx)
{
_myModels = ctx.MyModels;
}
public MyModel FindById(Guid id)
{
return _myModels.Where(x => x.Id == id).SingleOrDefault();
}
}
Run Code Online (Sandbox Code Playgroud)
并按以下方式实施工作单元?
public class MyEfUnitOfWork : IMyUnitOfWork
{
private readonly MyDbContext _ctx;
public IMyRepository MyModels { get; }
public MyEfUnitOfWork(MyDbContext ctx, MyEfRepository repo)
{
_ctx = ctx;
MyModels = repo;
}
void Commit() => _ctx.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
我想知道,因为我正在阅读的每一篇指南都建议将整个内容注入存储库以及通过它进行访问 …
c# unit-of-work repository-pattern dbcontext entity-framework-core