这不是Joomla或教程,(而且我在php方面非常生疏)话虽如此...
首先有几个注意事项:
* memcache不安全,这个实现让你放置用户名/密码:确保它安全地位于防火墙后面,或者先加密。如果需要,我很乐意给出一些指针。
* 如果内存不足,memcache不能保证不会丢失数据。实际上它是可靠的,但你的应用程序应该优雅地处理它。如果你不想丢失那样的数据,只需将类似couchbase的东西替换为memcache。
* 只返回一个令牌作为登录响应可能并不是非常有用。我会将令牌与用户名、任何其他信息一起进行json化,以便在不需要进行第二个API调用的情况下启动应用程序。
* 下面的代码不处理错误情况,如果你没有意识到这一点,我可以详细说明所有错误情况。
如果是我,我会使用memcache来持久化令牌,并将该令牌映射到最初传递的用户名和密码。你可以使用memcache的生存时间免费获得过期时间。
将用户名/密码发送到服务器(最好通过https)。
创建一个随机字符串或GUID(例如:http://php.net/manual/en/function.uniqid.php或http://www.lateralcode.com/creating-a-random-string-with-php/),这是您的令牌。
使用该令牌作为键将用户名/密码存储在memcache中。
设置超时。
$token = createToken("user1234", "pass2324");
print "Token: $token \n\n";
$credentials = credtialsFromToken($token);
print "Credentials from the token: ";
var_dump($credentials);
print "\n\n";
function setup() {
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");
}
function createToken($user, $pass) {
$TOKEN_EXPIRE_TIME=60 * 60 * 24 * 30;
$credentials = array(
"user" => $user,
"pass" => $pass,
);
$token = uniqid( );
memcache_set($token, credentials, 'some variable', 0, 30);
return $token;
}
function credtialsFromToken($token) {
$credentials = memcache_get($token);
return $credentials;
}
如果令牌不正确或已过期,则会返回空凭据并需要重新登录。
编辑:将其清理为在PHP中运行的函数...