我不知道这是不是一个很好的答案,但也不是一个很好的评论......
例如,我的用户表没有时间戳。
为什么?有具体原因吗? Laravel 将为您管理所有这些;真的没什么可做的——如果稍后您需要显示“上次登录”或“这个用户是什么时候创建的?”,这是一个不错的小奖励。
如果您想删除它们,您需要查看您的迁移。具体来说,create_users_table 迁移。你可以在这里找到:
/database/migrations/2014_10_12_000000_create_users_table.php
日期可能不同,但这是您应该查找的文件。在该文件中,您应该会看到如下内容:
...
$table->rememberToken();
$table->timestamps(); // remove or comment this line out.
...
这是在您的数据库中创建 created_at 和 updated_at 列的行。
注释掉该行后,您可以重新运行迁移以更新数据库:php artisan migrate:refresh。此时,您应该不再看到时间戳列。
您可能还需要更新一些控制器逻辑。我总是把它们留在那儿,所以我不能自信地说你很好。
刀片
使用刀片时,您可以像这样检查当前用户:
Auth::user()
例如,我的主页上可以有这样的内容:
<h1>Hello, {{ Auth::user()->name }}</h1> // Hello, Damon
另一个选项如果您需要检查用户是否已登录,您可以使用@guest。
例子:
@guest
<li class="nav-item">
<a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a>
</li>
@else
<li class="nav-item">
<a class="nav-link" href="{{ route('logout') }}">{{ __('Logout') }}</a>
</li>
@endguest
这里我们检查用户是否通过了身份验证。如果他们是客人,请显示登录链接。否则显示注销链接。
在控制器级别,您可以像这样检查当前用户:
// Get the authenticated user
$user = auth()->user();
一个非常简单的例子可能是这样的:
MyController.php
public function example() {
// Get the authenticated user.
$user = auth()->user();
// Redirect if not logged in.
if($user) {
return view('my-view');
} else {
return redirect('login');
}
}
Laravel Docs 在引导您完成设置方面做得很好。您真的可以将身份验证塑造成您想要的样子。
我不相信我真的回答了你的问题,但希望能帮助提供一些见解或需要考虑的事情。