服务端开始准备改形成Restuful风格API.php
旧版本采用if else对请求判断分发的机制太丑陋,
选用了CodeIgniter框架。git
使用插件:
https://github.com/chriskacerguis/codeigniter-restservergithub
由于使用了CodeIgniter的SAE版本,避免配置破坏,因此只复制插件目录下的三个文件。框架
config/rest.php
libraries/Format.php
libraries/Rest_Controller.php
根据官方示例编码本身的RestController。codeigniter
使用Digest认证
http://zh.wikipedia.org/wiki/HTTP摘要认证ui
1
2
3
4
5
|
$config[
'rest_realm'] =
'REST API';
//定义realm用于加密
$config[
'rest_auth'] =
'digest';
//切换auth规则方案为digest
$config[
'auth_source'] =
'library';
//切换验证方案为自定义验证
$config[
'auth_library_class'] =
'auth';
//定义用于执行验证的类名
$config[
'auth_library_function'] =
'login';
//定义用于验证的方法明
|
配置完参数后,该框架讲使用libraries文件夹下面的auth类名,经过login方法进行验证请求是否有效。
login方法必须含有两个参数
而且在digest认证下,必须返回md5(username:realm:password)组合后的字符串,框架会自行对请求中的参数头进行验证是否与该串一致。
例如以下代码将经过用户名admin与密码1234的用户经过验证。编码
<?php class auth { public function login($username, $password) { return md5('admin' . ':' . "REST API" . ":1234"); } }
若是使用Basic认证,只须要将rest_auth配置切换成basic而且在login中返回true、false对应成功与失败便可。加密
转载自 http://eyyoung.github.io/2014/12/15/codeigniter-restserver-auth/spa
做者 YOUNG Peaceful.插件