Php 如何在laravel 5.5控制器中完全注销?
在我注销我的laravel应用程序后,在浏览器中我按下按钮向后(返回),然后我看到仪表板 如果我回去的话,我想取消拉维尔·曼坦的“训练” 有人能帮我吗 编辑:我有两个登录文件,一个在Controllers/Auth内,另一个在Controllers/内。我确信这不是一个好的做法,但它可以让我的系统保持正常运行。如何解决这个问题 Controllers/Auth/LoginController.phpPhp 如何在laravel 5.5控制器中完全注销?,php,laravel,authentication,laravel-5,Php,Laravel,Authentication,Laravel 5,在我注销我的laravel应用程序后,在浏览器中我按下按钮向后(返回),然后我看到仪表板 如果我回去的话,我想取消拉维尔·曼坦的“训练” 有人能帮我吗 编辑:我有两个登录文件,一个在Controllers/Auth内,另一个在Controllers/内。我确信这不是一个好的做法,但它可以让我的系统保持正常运行。如何解决这个问题 Controllers/Auth/LoginController.php <?php namespace App\Http\Controllers\Auth;
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Session;
class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = '/';
/**
* Create a new controller instance.
*
* @return void
*/
private $user;
}
my web.php->
<?php
Route::get('/', 'LoginController@login')->name('login');
Route::get('auth/logout', 'Auth\LoginController@logout')->name('logout');
Route::get('/dashboard', 'DashboardController@index')->name('dashboard')->middleware('auth');
Route::post('/dashboard/getKey', 'DashboardController@getKey')->name('dashboard.key')->middleware('auth');
将这些行插入仪表板控制器,然后检查:
public function __contruct()
{
$this->middleware('auth');
}
这将检查用户是否登录?若用户是loggedout,那个么它将发送到您在auth中间件中定义的特定登录页面
您在注销功能中缺少请求
并在仪表板控制器中写入
按浏览器的“后退”按钮将加载以前加载的文档。它只是可见的,但不能确定是否有效。为此,您只需覆盖javascript中的back press事件
请参阅链接发生这种情况是因为缓存。为了防止出现这种情况,我们可以创建一个截获每个请求并将缓存设置为在0
时间内过期的缓存,从而在用户按下后退按钮时强制重新加载页面。以下是创建中间件的步骤:
第一
创建一个中间件,我称之为MyAuth
:
php artisan make:middleware MyAuth
第二
在app/Http/kernel.php
protected $routeMiddleware = [
...,
'my_auth' => \App\Http\Middleware\MyAuth::class,
];
public function handle($request, Closure $next, $guard = null)
{
$response = $next($request);
return $response
->withHeaders([
'Cache-Control' => 'no-store, no-cache, must-revalidate',
'Pragma'=> 'no-cache',
'Expires' => '0'
]);
}
}
第三
在新创建的中间件中app/Http/middleware/MyAuth.php
protected $routeMiddleware = [
...,
'my_auth' => \App\Http\Middleware\MyAuth::class,
];
public function handle($request, Closure $next, $guard = null)
{
$response = $next($request);
return $response
->withHeaders([
'Cache-Control' => 'no-store, no-cache, must-revalidate',
'Pragma'=> 'no-cache',
'Expires' => '0'
]);
}
}
然后
您可以这样添加中间件:
Route::group(['middleware' => 'my_auth'], function() {
// All your routes you want to be secure
});
此代码源于此在Laravel 7.x中,您可以使用以下命令从控制器注销:
Auth::logout()
显示您的仪表板控制器您可以共享仪表板控制器和路由文件吗?我共享了我的仪表板和路由现在显示您的注销文件和仪表板控制器屏幕截图我没有注销文件,我只在我的登录文件中使用注销功能也显示您的文件,其中写入了注销功能我喜欢您的建议,但是缓存控制中间件的名称MyAuth
有点混乱。你可以调整一下。谢谢你,朋友,正因为如此,我喜欢stackoverflow@Namoshek,我完全同意。
Route::group(['middleware' => 'my_auth'], function() {
// All your routes you want to be secure
});
Auth::logout()