我使用laravel-3
开发的网站有两个不同的部分:
/
/admin
在公共区域中,用户可以登录以访问其帐户,而在管理员中,只有具有所需权限的用户才能登录。
现在我无法将一个部分中使用的会话与另一个部分中使用的会话区分开来,因为它们都使用相同的session
配置参数,因此允许登录公共部分的任何人进入管理区域。
我一直在考虑为admin
部分定义一个环境,并为cookie
和path
定义不同的值:
$environments = array(
// Local
'admin' => array('http://localhost*/admin'), // To handle anything inside section "admin"
'local' => array('http://localhost*'), // To handle everything else
);
但由于Request::detect_env()
仅使用网址根检查这些规则,因此永远不会看到admin
环境(laravel/core.php:183)
。
$root = Request::foundation()->getRootUrl();
$environment = Request::detect_env($environments, $root);
答案 0 :(得分:1)
我建议不要使用环境来解决这个问题,而是使用带通配符的过滤器来委派验证:
Route::when('admin/*', 'login_admin_filter');
但如果你真的想要使用环境,我理解这样的文档:
在你的开始文件中你应该使用一个闭包:
$env = $app->detectEnvironment(function(){
// This condition need to fail if the user isn't an administrator
if($_SESSION['anything'] == 'admin' OR $every_thing_else){
return 'admin';
} else {
return 'production';
});