【发布时间】:2022-01-13 06:34:38
【问题描述】:
我有一个 Web 应用程序,其中前端使用 react.js 和 typescript 构建,后端使用 ASP.NET Core 3.1 构建并连接到 SQL Server。 SQL Server用于保存数据,我可以在前端输入。
现在我想实现一个自定义的身份验证系统,我可以在其中通过授权保护不同的端点。我知道有几种方法可以使用,但我不想使用服务/库,例如用户可以使用他的谷歌帐户登录。
在我看来,Jwt 似乎是一个很好的方式,但我真的不了解整个系统。
这篇文章已经帮助了我很多:Implementing authentication and authorization with React hooks, .NET Core Web API, and SQL Server。读完之后,我不明白登录和我的后端如何知道用户登录(为了保护我的端点)之间的关系。
当然,我已经阅读了很多关于 ASP.NET Core 的身份验证和授权的文章。我读过不同的服务,例如:
- Auth0(似乎不是一个好主意,因为您可以使用 google 等登录)
-
IdentityUI(看起来不错,我看过一些 youtube 教程,但它们都使用另一种项目结构,其中前端和后端没有分开。所以他们使用像
Login.cshtml这样的剃须刀页面,但我不想在后端渲染任何页面,只在前端)
为了在后端对我的控制器进行授权,我计划使用以下内容:
[Authorize] // to protect endpoint
[HttpGet]
public async Task<IEnumerable<>> GetData()
{
// some code
}
但正如我已经说过的:我不知道/不了解我的后端如何知道用户是否已登录(以及如何检查)。
谁能给我一个合适的教程或文章,在哪里解释,如何管理前端和后端的授权和身份验证?或者也许有人知道,如何将 IdentityUI 与带有 react + typescript 的前端构建和后端一起使用,它不应该呈现任何页面。
感谢您的关注:)
【问题讨论】:
-
JWT token 是一种用于访问资源或调用服务器提供的api的token。您的服务器需要解码 JWT 令牌并检查此令牌是否包含足够的权限来访问您的 api。令牌是在您的反应程序中生成的,它需要用户身份来生成令牌。基本上,解码令牌后,您可以获得用户信息、权限、令牌过期时间等......
标签: reactjs asp.net-core authentication authorization asp.net-identity