我为CakePHP应用程序构建了一个简单的测试API,允许用户从移动设备(或任何设备)登录并获得JSON响应.此API可用于内置PhoneGap的移动应用.
登录方法如下所示:
public function login()
{
if($this->request->is('post'))
{
// Use custom method in Model to find record with password params
$findUser = $this->User->findUser(
$_POST['username_or_email'],
AuthComponent::password($_POST['password'])
);
// If a user exists and matches params
if($findUser)
{
$this->User->id = $findUser['User']['id'];
$this->autoRender = false;
$this->response->type('json');
$this->response->body(json_encode(array('authenticated'=>true,'message'=>__('You have been logged in successfully'))));
}
else
{
$this->autoRender = false;
$this->response->type('json');
$this->response->body(json_encode(array('authenticated'=>false,'message'=>__('Username or password is incorrect'))));
}
}
else
{
$this->autoRender = false;
$this->response->type('json');
$this->response->body(json_encode(array('message'=>'GET request not allowed!')));
}
}
Run Code Online (Sandbox Code Playgroud)
移动设备(或任何API用户)可以发送他们的登录详细信息,然后他们将JSON的请求作为true或false获取,以进行身份验证.这个布尔值不用于给用户访问,而是告诉移动应用程序他们是否可以看到某些屏幕,他们只能获取数据,或者如果会话存在则可以发送数据!
如上所述,它们实际上也是在设备上登录API本身,因此如果他们直接访问网站(从该设备),他们将有一个会话并看到相同的JSON响应.
因此,基本上用户在与服务器通信的设备上保持登录的持续时间.这与需要为每个请求传递的令牌不同,在此示例中,它们具有会话.
现在问题...... …