Laravel 6完全自定义身份验证系统

时间:2020-03-04 15:29:34

标签: php laravel frameworks

我开始通过Laravel构建应用程序,我是一个初学者。 我想建立一个自己的Auth系统,因为当前的系统不能很好地适应我的用例。

我的用户将通过用户名和密码登录。注册不存在,因为所有用户帐户都将由我自己管理。

Laravel实现的问题是我与Laravel版本略有不同。例如,“我的用户”表将没有时间戳。我尝试在文档的帮助下构建出厂版本,但失败了。

另一个问题是我也想在自己的实现中在刀片语法中使用@auth

是否存在用于说用户登录方式类似的界面?

if(Hash::make("password") === $user->password){
Auth::login();
}else{
return redirect("/login");
}

Auth::login()是告诉laravel用户已登录的界面。

(对不起,英语不好)

1 个答案:

答案 0 :(得分:0)

我不知道这是否是一个答案,但也不是一个很好的评论……

例如,“我的用户”表将没有时间戳。

为什么?是否有特定原因? Laravel将为您管理所有这些;确实没有什么可做的-如果以后需要显示“上次登录”或“此用户是何时创建的?”,这是一笔不错的奖励。

如果要删除它们,则需要查看您的迁移。具体来说,是df['working']=df['register'].apply(lambda x: 1 if x!=0 or x.shift(1)!=0 or x.shift(2)!=0 or x.shift(3)!=0 or x.shift(4)!=0 or x.shift(5)!=0 or x.shift(6)!=0 else 0) 迁移。您可以在这里找到它:

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。那时,您将不再看到时间戳列。

可能也需要更新一些控制器逻辑。我一直只是把它们留在那儿,所以我不能自信地说你很好。

刀片

在使用Blade时,您可以像这样检查当前用户:

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

一个非常简单的例子可能是:

MyController.php

// Get the authenticated user
$user = auth()->user();

Laravel Docs做得很好,引导您完成所有设置。您可以按自己的意愿真正塑造身份验证。

我不认为我真的回答了您的问题,但希望能帮助您提供一些见解或要考虑的事情。