Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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
如何跟踪用户登录或未使用api?_Api_Cakephp 3.0 - Fatal编程技术网

如何跟踪用户登录或未使用api?

如何跟踪用户登录或未使用api?,api,cakephp-3.0,Api,Cakephp 3.0,我正在使用cakePHP创建api。我已经为用户登录创建了一个api。此登录功能工作正常。 以下是登录功能- 公共函数登录(){ 现在,我面临的问题是,如何从用户是否登录的其他api进行测试?在web应用程序中,可以通过默认的身份验证系统($this->auth->user())进行测试。但我不知道如何检查此用户是否从其他api登录。是否需要向每个api请求发送api参数?或任何其他建议 注意:我不能在头中发送任何令牌。因为在头中我发送jwt令牌。因为在我的应用程序中有两种身份验证。一种是登录还

我正在使用cakePHP创建api。我已经为用户登录创建了一个api。此登录功能工作正常。 以下是登录功能-

公共函数登录(){

现在,我面临的问题是,如何从用户是否登录的其他api进行测试?在web应用程序中,可以通过默认的身份验证系统($this->auth->user())进行测试。但我不知道如何检查此用户是否从其他api登录。是否需要向每个api请求发送api参数?或任何其他建议


注意:我不能在头中发送任何令牌。因为在头中我发送jwt令牌。因为在我的应用程序中有两种身份验证。一种是登录还是不登录?另一种是取决于用户的其他输入。这是由jwt处理的。所以我已经通过头发送jwt令牌。所以头已经被使用。

我想澄清一下

常规应用程序中,用户使用post请求登录,并在成功进行身份验证时创建一个会话。此会话是用户在以下每个请求中提供的一点信息,然后服务器会识别该用户。这由其默认设置中的身份验证组件完成

API中,您可以执行相同的操作:用户登录、接收会话并在以下每个请求上附加类似于会话cookie的对象。(.)但是,这并不被视为良好做法,因为API应该是无状态的(因此不需要类似cookie的东西)。使用令牌的解决方案,例如将某些秘密令牌的哈希值与时间戳一起使用。Auth组件也非常支持这一点。设置它后,您只需调用
$this->Auth->user()
,它将返回
false
或一组用户信息。请参阅下面的链接

请注意,默认情况下,此身份验证类型将阻止未经身份验证的用户,因此除非将页面设置为公共页面,否则您永远不会看到
->user()
返回false

另见:

  • ()

您需要在他们登录时设置某种访问令牌或JWT,然后检查这是否有效。我无法通过标头发送任何内容。因为我已经使用标头发送JWT令牌。我已更新了我的问题。您是否可以修改现有JWT以包含一些自定义声明来执行此操作?我找不到任何内容。我如何才能做到这一点。您可以吗建议我。我如何修改?您只需重新创建JWT,但向其添加新声明,重新签名并将其发送回客户端。因此,创建JWT就像创建原始JWT一样,但使用自定义声明。我必须通过标头发送此令牌。对吗?这将是标准的,是的。但您可以扩展身份验证类以使用例如查询参数。但为什么您不能在标题中添加一些内容?为什么您仅限于一个JWT标题条目?因此,我更改了应用程序流程并在标题中发送登录令牌。
    if ($this->request->is('post')) {
        $user = $this->Auth->identify();
    }
}