Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Authentication 使用JWT令牌的dotnet核心身份验证系统的奇怪行为_Authentication_Asp.net Core_.net Core_Authorization_Bearer Token - Fatal编程技术网

Authentication 使用JWT令牌的dotnet核心身份验证系统的奇怪行为

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,

我一直在测试我的Web API身份验证系统有一段时间了,并且遇到了一些非常奇怪的事情

以下是我遵循的步骤:

1-我注册了一个用户,系统提供了一个JWT令牌

2-我尝试使用令牌调用API操作,一切都按预期进行

3-现在,我删除了我的数据库,并用addmigration命令重新构建它

4-我的数据库中没有用户,但是如果我使用先前生成的令牌(从第1点开始)调用API操作,它将被接受为正确授权的令牌。记住,我的数据库是干净的。未注册用户、令牌等


有人能猜到这里发生了什么吗?

令牌所有者可以访问您的API,直到令牌未过期。这是JWT令牌实现的默认行为。您不需要检查数据库中的用户及其权限。令牌中的所有内容。这就像是一个缓存。但是,如果您想立即更改用户权限和访问参数,有3种方法:

  • 令牌的寿命缩短
  • 在解析令牌数据时,编写中间件并检查数据库中的用户
  • 从门户注销用户以强制使用新令牌进行新登录

大多数业务规则允许用户延迟访问更新或强制他们重新登录。

这并不奇怪,这是预期的行为。您的令牌未存储在DB中,请检查令牌存储,只要令牌未过期,就可以进行身份验证。我认为core.net identity system执行的身份验证步骤是检查数据库中的令牌凭据。如果它无效,则返回401,并且不调用该操作。它不是这样做的吗?