我正在创建一个Web服务(试图成为RESTful)不使用cookie。我的身份验证方案如下。
POST
的用户名和哈希密码(通过HTTPS)至/sessions
。/sessions
以会话ID作为响应正文的一部分进行响应。?session_id=[session_id]
附加到网址来验证所有其他请求。实现这个时,我想创建一个会话ID,将其存储在某个地方(文件或数据库),然后手动插入会话ID作为响应主体的一部分。
PHP中现有的会话功能已经做了很多这样的事情(ID生成和文件存储),但我无法弄清楚如何只使用这些部分而没有将会话ID作为cookie发送给用户
这可能吗?或者我是否需要实现自己的会话ID生成功能(任何提示?)和文件/数据库存储?
答案 0 :(得分:1)
您可以禁用会话Cookie的ini设置。
ini_set('session.use_cookies', '0');
session_id($your_session_token);
session_start();
示例:
身份验证api - ... / sessions /
...
check username/password ... other things
...
ini_set('session.use_cookies', '0');
session_start();
$_SESSION['user_stuff'] = $stuff;
$_SESSION['other_things'] = $things;
...
print session_id() along with whatever else is needed in the response body
实际服务 - ... / some_other_service_url /?session_id = [session_id]
ini_set('session.use_cookies', '0');
session_id($_GET['session_id']);//I'm not sure where PHP will look for it by default and I'm too lazy to check, so I'm making sure its $_GET['session_id']
session_start();
if(!$_SESSION['user_stuff']) {
session token is missing, invalid or expired. the client needs to reauthenticate
}
do some useful things