通过 Laravel 中的链接注销

问题描述 投票:0回答:7

我的顶部导航栏中有一个“注销”链接。我想知道如何才能做到这一点,以便在我登录时,当我单击它时它会将我注销并返回到主页。

具体来说,我要对 Laravel 中的哪些文件进行哪些更改?另外,我需要在当前仅包含 HTML 的视图中编写哪些代码才能触发此操作?

laravel navbar logout
7个回答
89
投票

当你运行

php artisan make:auth
时,Laravel 5.5 中默认的 app.php 是这样的:

<a href="{{ route('logout') }}" onclick="event.preventDefault(); document.getElementById('logout-form').submit();">
    Logout
</a>

<form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
    {{ csrf_field() }}
</form>

38
投票

编辑于2019年12月28日:这是工作,但这个答案包含一个严重的安全问题。使用前请考虑清楚。

Lucas Bustamante
的答案也许是更好的选择。请参阅此答案的评论部分。

1) 如果您使用的是 laravel 包含的 auth 脚手架。您可以这样做,在导航栏中添加以下内容:

<a href="{{ url('/logout') }}"> logout </a>

然后将其添加到您的 web.php 文件中

Route::get('/logout', '\App\Http\Controllers\Auth\LoginController@logout');

完成。这将使您注销并重定向到主页。要获取身份验证脚手架,请从命令行 cd 进入项目根目录并运行

php artisan make:auth 

2)将其添加到您的导航栏:

<a href="{{ url('/logout') }}"> logout </a>

然后将其添加到您的 web.php 文件中

Route::get('/logout', 'YourController@logout');

然后在 YourController.php 文件中添加以下内容

public function logout () {
    //logout user
    auth()->logout();
    // redirect to homepage
    return redirect('/');
}

完成。

阅读:

https://mattstauffer.co/blog/the-auth-scaffold-in-laravel-5-2
https://www.cloudways.com/blog/laravel-login-authentication/

8
投票

使用

logout()
方法:

auth()->logout();

或者:

Auth::logout();

要让用户退出您的应用程序,您可以使用

logout
外观上的
Auth
方法。这将清除用户会话中的身份验证信息。


6
投票

如果您想使用 JavaScript:

<a href="javascript:void" onclick="document.getElementById('logout-form').submit();">
    Logout
</a>

<form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
    @csrf
</form>

如果你想使用 jQuery 而不是 JavaScript:

<a href="javascript:void" onclick="$('#logout-form').submit();">
    Logout
</a>

<form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
    @csrf
</form>

4
投票

正如接受的答案提到通过

GET
注销有副作用,您应该使用 Laravel auth 已经创建的默认
POST
路由。

只需创建一个小表单并通过链接或按钮 HTML 标签提交即可:

<form action="{{ route('logout') }}" method="POST">
    @csrf
    <button type="submit">
        {{ __('Logout') }}
    </button>
</form>

0
投票

如果您使用guard,您可以使用这行代码注销:

Auth::guard('you-guard')->logout();

0
投票

在 Laravel 8.x 中

@csrf
                        <x-jet-dropdown-link href="{{ route('logout') }}"
                                            onclick="event.preventDefault();
                                                        this.closest('form').submit();">
                            {{ __('Logout') }}
                        </x-jet-dropdown-link>
                    </form>
© www.soinside.com 2019 - 2024. All rights reserved.