3

我是 laravel 的新手,所以我试图创建一个用于学习目的的小项目。我已经使用内置的身份验证进行登录和注册。这些自动生成的页面运行良好,现在我使用名为 postcontroller 的控制器创建了一条到资源帖子的路由。

现在在 postcontroller 中,我检查用户是否有权返回视图:将其他帖子发布到登录页面。所以要检查它,我会遵循

if (!Auth::guest())

return view('posts');

else

return "......";

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

4

4 回答 4

2

您确定您已登录吗?

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

dd(Auth::user());

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

于 2016-01-16T08:19:42.087 回答
0

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

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

于 2016-03-20T04:14:58.260 回答
0

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

public function __construct()
{

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

在此之后,您需要确保将路线添加到路线列表中。这是通过在 Routes/web.php 中添加给定的行来完成的

Route::resource('user','PostController');

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

php artisan route:list

一旦添加了路由,控制器就知道他们可以互相交谈,你们都准备好了。

注意:除非是指用户登录后只能访问索引和显示路线。在此处查看 laravel文档以获取更多详细信息。希望这可以帮助。

于 2017-09-18T23:55:01.890 回答
0

您可以使用

if(!Auth::user())

//用户未登录

别的

//用户登录

于 2020-03-19T23:17:42.743 回答