如何在 Laravel 中设置全局会话。在普通的 PHP 脚本中,$_SESSION['myvar']如果浏览器关闭或调用函数session_destroy()/ ,全局会话就会终止。unset()
我在 Laravel 中尝试过这个,但它在控制器扩展 BaseController 中不起作用:
Session::set( 'id', $user->id );
Session::get( 'id' );
Run Code Online (Sandbox Code Playgroud)
我的代码的上下文是:
// ROUTES
Route::get( '/', 'MyController@setSession' );
// CONTROLLER
class MyController extends Controller
{
public function setSession( )
{
// ...
Session::set( 'id', $user->id );
return view('access');
}
}
// VIEW -> LOST Session
@if (Session::has('id') && Session::get('id') == 'hsdiwe78912hj')
I have access!
@else
I must stay here! <!-- I always get this -->
@endif
Run Code Online (Sandbox Code Playgroud) 如果用户是admin,我想验证一些路由。
Route::get( '/user/{data}', 'UserController@getData' );
Route::post( '/user/{data}', 'UserController@postData' );
Run Code Online (Sandbox Code Playgroud)
现在,我在Controller内部创建了它:
public function getData( $data = 'one' )
{
if ( Auth::user()->permission == 'admin' ) {
//...
} else {
//...
}
}
public function postData( Request $request, $data = 'one' )
{
if ( Auth::user()->permission == 'admin' ) {
//...
} else {
//...
}
}
Run Code Online (Sandbox Code Playgroud)
我想使用Route :: group做到这一点,但是如何在route.php中做到这一点呢?