对于已登录和已注销的用户,Auth :: guest()都返回true

时间:2016-01-16 08:04:57

标签: php laravel laravel-routing laravel-5.2 laravel-middleware

我是laravel的新手,所以我试图创建一个用于学习目的的小项目。我使用内置的Auth进行登录和注册。这些自动生成的页面工作得很好,现在我在这里通过使用名为postcontroller的控制器创建了一个到资源帖子的路径。

现在在postcontroller中,我检查用户是否有权返回视图:将else发布到登录页面。所以检查一下我做了以下

if (!Auth::guest())

return view('posts');

else

return "......";

现在,Auth :: guest()为登录和注销的用户返回true。

4 个答案:

答案 0 :(得分:1)

您确定已登录吗?

尝试使用

转储您的Auth :: user()数据

//convert BitmapDrawable to byte[] //winsize is height screen user device BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeByteArray(imageData, 0, imageData.length, options); if (options.outHeight >= (CampainManager.winSize )) { int x = (options.outHeight / (winSize )); options.inSampleSize = x; } options.inJustDecodeBounds = false; bitmap = BitmapFactory.decodeByteArray(imageData, 0, imageData.length, options);

顺便说一句,如果你在if语句中返回,则不需要使用else。

答案 1 :(得分:0)

您需要确保使用'网络'中间件。默认情况下,主页不使用此功能,但/ home路由会使用此功能,这就是刀片模板在/ home下工作的原因。

添加'网络'中间件和dd(Auth :: user()),你会看到更好的结果。

答案 2 :(得分:0)

但是你必须为中间件添加这行代码,以便在postcontroller中知道它需要检查登录的用户。添加这是PostController:

public function __construct()
{

    $this->middleware('auth', ['except' => ['index', 'show']]);
}

在此之后,您需要确保将路由添加到路由列表中。这是通过在Routes / web.php

中添加给定行来完成的
Route::resource('user','PostController');

通过在终端输入以下命令来重新检查是否添加了它:

php artisan route:list

添加路线后,控制器知道他们可以互相交谈,你们都已经准备好了。

注意:除非意味着用户只能访问索引并在用户登录时显示路线。请查看laravel documentation以获取更多详细信息。希望这会有所帮助。

答案 3 :(得分:0)

您可以使用

if(!Auth :: user())

//用户未登录

其他

//用户已登录