如何跟踪用户是否已使用api登录?

时间:2019-02-27 11:15:58

标签: api cakephp-3.0

我正在使用cakePHP创建api。我已经为用户登录创建了一个api。此登录功能运行正常。 这是登录功能-

公共功能login(){

    if ($this->request->is('post')) {
        $user = $this->Auth->identify();
    }
} 

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

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

1 个答案:

答案 0 :(得分:1)

需要澄清的几件事。

常规应用中,用户使用发布请求登录,并在成功认证后创建会话。该会话是用户在以下每个请求中提供的一点信息,然后服务器识别出该用户。这是通过Auth组件的默认设置完成的。

API 中,您可以执行以下操作:用户登录,接收会话,并在随后的每个请求上附加类似于会话cookie的对象。 ({Example of such a Python client。)但是,由于API应该是无状态的(因此不需要像cookie这样的东西),因此不认为这是一种好习惯。使用令牌的解决方案,例如一些秘密令牌的哈希值和时间戳。 Auth组件也很好地支持了这一点。设置好之后,您可以像通常一样简单地调用$this->Auth->user(),它返回false或一系列用户信息。请参阅下面的链接。

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

另请参阅: