我有一种情况,我想记录/识别谁从前端发出了请求。
我的意思是我们有常规的SPA应用程序(Angular),然后是.NET Core中的后端Web API和SQL Server数据库。
所以现在,只要对数据库进行调用,它就会将其视为用于连接字符串的用户。
而且我一直在思考,有没有机会在不知道从后端到数据库的每个调用中都包括用户名的情况下识别用户?
主要是我们使用通过Dapper调用的存储过程
理想情况下,您的SPA应该使用身份验证提供程序和流程。当前的最佳实践是身份验证代码+ pkce(开放ID连接流程)。在客户端应用程序中,您应该具有身份提供者提供的令牌,然后您可以在调用API时使用该令牌。
在API中,您解码并验证令牌,然后使用令牌中的主题标识符和声明(例如电子邮件地址)在数据库中查找相关用户,或者您可以调用身份提供者的用户信息方法来获取用户详细信息(声称类似于电子邮件地址)返回令牌的详细信息。
在.net核心中,中间件只需配置即可为您解决所有这些问题。用户声明和值应该可以从当前用户那里获得(HttpContext> Current),因此您可能需要注入IHttpContextAccessor。