在我们的应用程序的每个SQL表中,我们都有"CreatedDate"和"ModifiedDate"列.我们正在使用DB第一种方法.当我保存数据时,我希望自动填充这两列.一种方法是getdate()在SQL表列本身上使用默认值.所以这将部分地解决问题.这意味着当实体是新的时,它将设置CreatedDate和ModifiedDate.但是,当我编辑/更新实体时,我只想ModifiedDate更新.
使用Code第一种方法有很多文章在做这件事.但我们正在使用DB第一种方法.
我有什么选择?
我正在尝试使用Jason Taylor 的 Clean Architecture Template,这个模板使用 NSwag 自动创建一个 TypeScript 客户端(Angular),但我不需要创建一个 TS 客户端,所以我的主要目标是用 Razor Pages 替换它。我已经能够做到这一点,但当CurrentUserService被实例化时,我遇到了问题,它应该在这一行中设置 UserId:
UserId = httpContextAccessor.HttpContext?.User?.FindFirstValue(ClaimTypes.NameIdentifier);
Run Code Online (Sandbox Code Playgroud)
这是完整的CurrentUserService:
using CleanREC0.Application.Common.Interfaces;
using Microsoft.AspNetCore.Http;
using System.Security.Claims;
namespace CleanREC0.WebUI.Services
{
public class CurrentUserService : ICurrentUserService
{
public CurrentUserService(IHttpContextAccessor httpContextAccessor)
{
UserId = httpContextAccessor.HttpContext?.User?.FindFirstValue(ClaimTypes.NameIdentifier);
}
public string UserId { get; }
}
}
Run Code Online (Sandbox Code Playgroud)
第一次甚至 HttpContext 为空,这很好,因为一切都在初始化,但随后的调用总是在所有httpContextAccessor.HttpContext.User.Identity属性上返回null,用户显示了一个身份,但它的所有属性和声明都是null或Yield no results,即使用户正确登录。
这是我对模板所做的事情的列表:
c# identity dependency-injection httpcontext clean-architecture
我正在使用 flutter 应用程序中的 firebase auth,该应用程序从前端获取 jwt,如下所示:
accessToken = await user!.getIdToken(true);
Run Code Online (Sandbox Code Playgroud)
现在我希望我的 .net 5 AspNetCore 后端应用程序验证 id 令牌。
我将 firebase admin SDK 添加到我的 .net 应用程序中,如下所示:
在startup.cs:
FirebaseApp.Create();
Run Code Online (Sandbox Code Playgroud)
Firebase文档显示了如何验证 id 令牌:
FirebaseToken decodedToken = await FirebaseAuth.DefaultInstance
.VerifyIdTokenAsync(idToken);
string uid = decodedToken.Uid;
Run Code Online (Sandbox Code Playgroud)
但是这段代码去哪里了呢?我不想为我的 AspNetCore 应用程序中的每个控制器端点手动执行此操作。这可以作为中间件在每个 api 请求上自动发生吗?
编辑:Eeek 我什至不认为 Firebase Admin 是我想要的。我只想验证使用 Firebase Auth for Flutter 在客户端上创建的 jwt id 令牌,以尽可能最 firebasey 的方式。它不适用于管理员,适用于普通用户。我以为 Firebase Admin 就是这样。我应该朝什么方向发展?我在网上找到了各种关于不同策略的文章,所以很困惑哪一个是正确的。这足够了吗?https://dominique-k.medium.com/using-firebase-jwt-tokens-in-asp-net-core-net-5-834c43d4aa00它看起来不是很火,而且似乎过于简化?我认为下面 Dharmaraj 的答案是最火爆的方式,但我不确定从哪里idToken获取值(如何从请求标头获取?否则它只是空)。