Authentication 使用JWT令牌的dotnet核心身份验证系统的奇怪行为
我一直在测试我的Web API身份验证系统有一段时间了,并且遇到了一些非常奇怪的事情 以下是我遵循的步骤: 1-我注册了一个用户,系统提供了一个JWT令牌 2-我尝试使用令牌调用API操作,一切都按预期进行 3-现在,我删除了我的数据库,并用addmigration命令重新构建它 4-我的数据库中没有用户,但是如果我使用先前生成的令牌(从第1点开始)调用API操作,它将被接受为正确授权的令牌。记住,我的数据库是干净的。未注册用户、令牌等Authentication 使用JWT令牌的dotnet核心身份验证系统的奇怪行为,authentication,asp.net-core,.net-core,authorization,bearer-token,Authentication,Asp.net Core,.net Core,Authorization,Bearer Token,我一直在测试我的Web API身份验证系统有一段时间了,并且遇到了一些非常奇怪的事情 以下是我遵循的步骤: 1-我注册了一个用户,系统提供了一个JWT令牌 2-我尝试使用令牌调用API操作,一切都按预期进行 3-现在,我删除了我的数据库,并用addmigration命令重新构建它 4-我的数据库中没有用户,但是如果我使用先前生成的令牌(从第1点开始)调用API操作,它将被接受为正确授权的令牌。记住,我的数据库是干净的。未注册用户、令牌等 有人能猜到这里发生了什么吗?令牌所有者可以访问您的API,
有人能猜到这里发生了什么吗?令牌所有者可以访问您的API,直到令牌未过期。这是JWT令牌实现的默认行为。您不需要检查数据库中的用户及其权限。令牌中的所有内容。这就像是一个缓存。但是,如果您想立即更改用户权限和访问参数,有3种方法:
- 令牌的寿命缩短李>
- 在解析令牌数据时,编写中间件并检查数据库中的用户李>
- 从门户注销用户以强制使用新令牌进行新登录李>
大多数业务规则允许用户延迟访问更新或强制他们重新登录。这并不奇怪,这是预期的行为。您的令牌未存储在DB中,请检查令牌存储,只要令牌未过期,就可以进行身份验证。我认为core.net identity system执行的身份验证步骤是检查数据库中的令牌凭据。如果它无效,则返回401,并且不调用该操作。它不是这样做的吗?