我正在使用codeigniter,mysql和jquery运行良好的应用程序。目前,我们计划使用移动应用程序评估我们的Web应用程序。所以我们计划开发Web应用程序,android,ios和blackberry。一切都是原生应用。
我们计划开发codeigniter restful API(这是所有客户端Web和移动设备的服务器)。 对于Web应用程序,我们计划使用角度js开发客户端。但每个客户端只能访问web api服务器。我的codeigniter控制器现在看起来像API。
我的问题是, 1.这个好主意是为所有客户端Web和移动设备创建单一服务器 2.如何为Web和移动应用程序创建唯一身份验证
因为在网络应用中我们有会话但在移动设备中没有会话。那么如何为两个应用程序创建唯一的身份验证
我计划在登录成功后向客户端发送令牌。然后,对于服务器的每个请求,客户端将发送带有请求标头的令牌。我不知道如何为移动应用程序做同样的事情,因为有会话的web应用程序,因此我们可以将令牌保存到服务器中的会话变量中。但是在移动应用程序的情况下,如何创建服务器变量并维护令牌。
请有人帮助我澄清我的疑虑。
答案 0 :(得分:0)
您可以查看 Codeigniter REST控制器 (https://github.com/chriskacerguis/codeigniter-restserver/tree/master/application)。它有不同的方法POST,GET等
用于身份验证: 如果服务器获得登录请求,如果登录参数有效则允许用户登录,同时用会话ID更新用户db列(这不是php会话ID) - 创建一个用户id + time的会话+一些随机字符串sha 1或其他一些加密。并且将此会话与所有其他请求一起使用。如果会话与服务匹配,则返回无效会话消息。
如果服务器收到来自用户的登录请求,即使存在会话,重新生成会话并更新db中的相应列,这将使前一个会话无效。
此外,我们可以将API KEY(Web和应用程序开发人员都知道)共享为http头参数。如果API密钥匹配,那么只有请求继续。提到的codeigniter控制器可以选择设置API密钥。
希望很清楚......
答案 1 :(得分:0)
<?php
class Api_ci extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->model('Api_model');
$this->load->helper('text');
}
// code for login *api*-------------------------------
public function login_api_ci(){
$email = $this->input->get('email');
$pass = $this->input->get('password');
$query = $this->Api_model->login_api($email,$pass);
echo json_encode($query);
}
}
?>
<?php
class Api_model extends CI_Model{
public function __construct()
{
parent::__construct();
// Your own constructor code
$this->load->database();
}
// code for login api
public function login_api($username,$password){
$query = $this->db->query("SELECT * FROM `host_users` WHERE `email` = '$username' AND `password` = '$password'");
return $query->result_array();
}
}
?>
After these process, your API URL your domain name and / class name, class function:
www.example.com/Api_ci/login_api_ci?email=gaurav@gmail.com&password=1234567899
Output like this :
[{"id":"112","f_name":"gaurav","l_name":"singh","email":"gaurav@gmail.com","mob":"1234567899","password":"1234567899","img":null}]
答案 2 :(得分:0)
仅更新此线程,我觉得使用Codeigniter创建RESTFUL Web API是过头的,除非构建一个整体系统,否则很多事情都是不必要的。
我更喜欢只创建一个没有框架的简单API更好,更轻便,也可以轻松扩展,因为如今的微服务比整体式开发更具优势。