在网上浏览后,我仍然不了解会话在Slim2中是如何运作的。 Slim SessionCookie的例子极为罕见。几乎没有。并且我坚持从文档中得到的东西。
http://docs.slimframework.com/sessions/cookies/
"第二个参数是可选的;它显示在这里,因此您可以看到默认的中间件设置。会话cookie中间件将与$ _SESSION超全局无缝协作,因此您可以轻松迁移到此会话存储中间件,而无需更改应用程序代码。
如果您使用会话cookie中间件,则不需要启动本机PHP会话。 $ _SESSION超全局仍然可用,它将通过中间件层而不是PHP的本机会话管理持久存储到HTTP cookie中。"
所以,例如,
use Slim\Slim;
use Slim\Middleware\SessionCookie;
$app = new Slim();
$app->add(new SessionCookie(
array(
'expires' => '20 minutes',
'path' => '/',
'domain' => null,
'secure' => false,
'httponly' => false,
'name' => 'slim_session',
'secret' => 'CHANGE_ME',
'cipher' => MCRYPT_RIJNDAEL_256,
'cipher_mode' => MCRYPT_MODE_CBC
)
));
$app->get('/admin', function () use ($app) {
// Check for session.
if (session: user exist) {
echo "Hello Admin";
} else {
$app->redirect('login');
}
});
$app->run();
如何将session:user设置为中间件并检索它?
这就是我在原生PHP中的表现,
bootstrap.php中
// Check username and password, if they match with the ones in db,
// then get the hashed key in the user row.
// Last, store the key in the session.
$_SESSION["user"] = 'hashedkeyxxxx';
admin.php的,
// Check if the session exist when the user want to access the admin only pages.
if ($_SESSION["user"]) {
echo "Hello Admin";
} else {
// redirect
}
我怎么能用Slim呢?
答案 0 :(得分:2)
直接从文档中获取。
“如果您使用会话cookie中间件,则不需要启动本地PHP会话。$ _SESSION超级全局仍然可用,它将通过中间件层而不是PHP的本机持久存储到HTTP cookie中会话管理。“
http://docs.slimframework.com/sessions/cookies/
因此,当您初始化中间件时,您可以像在传统PHP中一样访问$ _SESSION。快乐的编码。
编辑:你无法直接实现这一目标。但是如果您使用像https://github.com/yusukezzz/slim-session-manager这样的自定义中间件。您将获得使用不同的API。
但是从文档中复制,您不是在使用PHP实现,而是以类似的方式工作的SLIM实现。