我是在搞乱某事还是Laravel会执行sql请求从用户表中获取数据,即使我在特定页面上执行的操作是Auth :: check()还是之前('auth')在路由器中过滤?它不能“得到”用户只是从会话数据(login_82e5d2c56bdd0811318f0cf078b78bfc = user_id等)登录而没有
select * from `users` where `id` = ? limit 1
? 在简单检查用户状态的情况下,有一些安全性或其他上升不仅仅处理会话数据(我更愿意为每个会话(不是每页)向mysql发出1个用户数据请求(或者除此之外)而不是存储它在会话中,会话设置存储在memcached或redis中,我想知道我可以得到“开箱即用”\没有认证系统框架的严重变化)?
答案 0 :(得分:0)
第一次检查时,您可以将其保存在容器中
App::before(function($request)
{
App::singleton('myApp', function(){
$app = new stdClass();
if(Auth::check()) {
$app->user = Auth::User();
$app->isLogedin = TRUE;
}
else {
$app->user = false;
$app->isLogedin = false;
}
return $app;
});
$myApp = App::make('myApp');
View::share('myApp', $myApp);
});
现在在每个视图中,您都可以像这样检查
@if($myApp->isLogedin)
Hello {{ $myApp->user->user->user_name }}!
@endif
在任何控制器中,您都可以像
一样使用它$myApp = App::make(myApp); // Get it from the container
// do whatever you want to do
因此,您可以检查是否已登录,也可以使用Auth::user()
使用$myApp->user
对象。