如何防止laravel 5.2中的浏览器后退按钮
Posted
技术标签:
【中文标题】如何防止laravel 5.2中的浏览器后退按钮【英文标题】:How to prevent browser back button in laravel 5.2 【发布时间】:2017-04-23 07:47:06 【问题描述】:我正在 laravel 5.2 中开发一个 crm 应用程序,但我遇到了一个问题。尽管我已在 Laravel 5.2 中正确注销,但我可以访问上一页。 Laravel 5.2 退出后如何防止浏览器的后退键登录?
我知道这不是安全问题,但我仍然想阻止用户使用浏览器的后退按钮访问上一页。我使用了以下 URL 中提到的以下解决方案,但它仍然对我不起作用。 https://arjunphp.com/laravel-5-logout-and-prevent-back-button/
到目前为止,我正在从头开始开发我的应用程序。我刚刚使用 Laravel auth 即 (php artisan make:auth) 并发现了这个问题并卡住了。
【问题讨论】:
How to control web page caching, across all browsers?的可能重复 ***.com/questions/30118998/…的可能重复 【参考方案1】:这不是问题。当用户单击“返回”时,浏览器会将上一页呈现为缓存版本。
这里有 3 个选项:
别担心。如果他们已经登录并且之前看到过它,那么如果他们回去的话,他们会期待同样的结果。但是,如果他们尝试导航到具有auth middleware
的任何其他位置,他们仍然会被重定向到登录页面。
当他们注销时,将他们重定向到登录页面。
将它们重定向回之前的 URL,这将再次触发 auth middleware
。
【讨论】:
非常感谢您的详细解释。 为单个返回按钮工作,如果我按两次返回按钮,它不起作用【参考方案2】:正如大家所说,这不是问题。但即使你想阻止它,这也是你可以做的。在您的注销功能中,您在调用注销方法后使用类似这样的东西,
return redirect(\URL::previous());
我已经做到了,它解决了这个问题。请试试这个。 希望这会有所帮助!
【讨论】:
感谢您的回复,但它不起作用。为了更清楚,我也添加了注销功能代码。 public function logout() Auth::guard($this->getGuard())->logout();返回重定向(\URL::previous()); 请尝试使用 url()->previous() 而不是 URL::previous()。然后看看它是否有效。顺便说一句,您的注销功能对我来说看起来不错 不起作用:(我的注销功能在“vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php”文件下。我使用 php artisan make:auth 命令进行身份验证. 您还没有制作任何控制器来处理登录注销操作?那你如何控制路线?我很困惑 它不起作用我仍然能够访问上一页。就控制路线而言。这些是登录和注销的路线。可能是我没有得到你想说的,因为我是 Laravel 世界的新手。 :) Route::get('/admin/login','AdminAuth\AuthController@showLoginForm'); Route::post('/admin/login','AdminAuth\AuthController@login'); Route::get('/admin/logout', [ 'as'=> 'logouturl', 'uses'=>'AdminAuth\AuthController@logout' ] );【参考方案3】:解决方案。创建中间件。
它应该看起来像这样。
<?php
namespace App\Http\Middleware;
use Closure;
class HistoryBack
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
$response = $next($request);
return $response->header('Cache-Control','nocache, no-store, max-age=0, must-revalidate')
->header('Pragma','no-cache') //HTTP 1.0
->header('Expires','Sat, 01 Jan 1990 00:00:00 GMT'); // // Date in the past
下面是在内核中注册中间件,并在路由中使用 问候
请原谅我的英语。我正在使用翻译器来理解。我只会说和懂西班牙语和一点英语
【讨论】:
感谢您的回复,但我已经尝试过我在问题中提到的解决方案。以上是关于如何防止laravel 5.2中的浏览器后退按钮的主要内容,如果未能解决你的问题,请参考以下文章
通过在 L5 中点击浏览器上的后退按钮来防止注销后再次登录?