登录验证
目录
在登录网站前,我们需要先验证用户输入的帐号信息是否匹配。因此需要先在登陆器服务管理端中接口地址处添加好登陆器可以访问的地址。
如服务端默认自带的请求地址为:http://您安装服务端的地址/?g=Api&m=Check&a=login
示例代码位于:App/Api/POST/Check.class.php文件中的 login() 方法
发送参数
当用户在登陆器填写好帐号和密码,点击登录按钮后。登陆器会向用户当前选择的网站接口发送两个参数:
提交形式:POST
| 参数名称 | 类型 | 说明 |
|---|---|---|
| account | String | 用户键入的帐号 |
| password | String | 用户键入的密码 |
接收参数
在登陆器发送数据后,接口端需要处理上述参数,判断该用户提交的帐号和密码与网站保存的信息是否一致。
不论成功与否,接口都需要按照《全局格式》的全局格式返回指定参数。
如上所是,在用户的信息匹配正确下,我们需要按照全局格式返回指定格式的信息。下面给出一个PHP版登录示例的简写代码(具体示例代码位于服务端的 /App/Api/POST/Check.class.php文件中:):
public function login() {
/**
* 此处处理登陆器发送过来的account 和 password 两个参数
*/
$data['account'] = $_POST['account'];
$data['password'] = $_POST['password'];
if (empty($data)) {
echo json_encode(array('
'msg' => '请提交帐号密码不能为空',
'data' => '',
'status' => '0'
'));
}
//此处省略验证用户帐号信息是否一致的业务代码。
if (empty($checkUser)) {
echo json_encode(array('
'msg' => '帐号或者密码错误',
'data' => '',
'status' => '0'
'));
}
/**
* 当登录成功后,我们需要生成一个全球唯一的匹配值(具体如何生成,自行编写)
* 该匹配值用于验证用户是否在登陆器触发登录动作
*/
$sec = explode(' ', microtime());
$mark = crypt(round(time() * $sec['0'], 0));
/**
* 生成完唯一的匹配值后,我们要将匹配值连同用户的帐号记录至数据库
* 此处省略记录入库的业务代码
*/
//上面动作都完成后,即用户的登录动作已经准备就绪了,我们返回指定的信息给登陆器,让他触发浏览器访问登录地址。
echo json_encode(array('
'msg' => '登录成功',
'data' => " //此处必须返回一个可以访问的URL地址。后面登陆器将会通过打开浏览器,访问本地址
'status' => '200'
'));
}总结一下流程:
登陆器将帐号和密码两个参数(account和password)通过POST形式发送给用户要登录的网站的验证接口。
接口处理登陆器发送过来的参数,验证用户信息。在此过程中,如果帐号信息有任何问题,则返回提示信息。格式参照《全局格式》
用户帐号信息无误,我们需要生存一个唯一的匹配值。并将匹配值和帐号信息记录到指定的数据库表。
建议该表的字段设计如下:自增ID(int),匹配值字段(varchar:128),帐号字段(varchar:128),创建时间字段(int),使用状态(tyinInt)
创建时间字段用于下一章中登录验证接口该匹配值是否已经超时的作用。最后也是参照《全局格式》,返回一个状态为200,data返回的是一个可以访问的URL,且URL中带有刚才生成匹配值的参数。
如刚才生成的匹配值为123456。我们的登录地址为:http://www.pescms.com/login.php。那么data返回的完整数据如下:
data:'http://www.pescms.com/login.php?mark=123456'