【问题标题】:Laravel 4 - auth.basic filter session doesn't expire | How to expire auth.basic sessionLaravel 4 - auth.basic 过滤器会话不会过期|如何使 auth.basic 会话过期
【发布时间】:2013-10-06 09:54:33
【问题描述】:

我有一个简单的管理区域,我可以在其中更新网站的某些方面。因为我将是唯一一个访问它的人,所以我想到了使用 Laravel 4 的 auth.basic 功能。

我在我的 routes.php 文件上建立了一个组,将 auth.basic 过滤器一次添加到多个资源:

//routes.php

// Password protected routes
Route::group(['before' => 'auth.basic'], function () {
    Route::get('admin', ['as' => 'admin', 'uses' => 'AdminController@index']);
    Route::resource('admin', 'AdminController');
    Route::resource('users', 'UsersController');
    Route::resource('pizzas', 'PizzasController');

});

路由受到保护(应该如此),当我第一次访问这些路由时,我必须填写弹出式身份验证表单。

问题出在:我相信一旦我关闭浏览器,经过身份验证的会话就会过期。这没有发生。即使浏览器关闭几个小时,它仍然会“记住我”。

  • 我尝试在config/session.php 上设置'lifetime' => 0,

我能做些什么来解决这个问题?

谢谢。

【问题讨论】:

  • 你是关闭浏览器,还是只关闭标签页?不知道你在哪个操作系统,但是mac os会用cmd-q完全关闭。
  • 我关闭浏览器。在 Chrome、Firefox 和 IE9 上尝试过。他们有相同的行为。我在 Windows 7 上。
  • 嗯,奇怪。在这一点上我能想到的唯一的东西就是饼干。转储他们,仍然登录?
  • 我尝试停止并重新启动 Apache 没有成功,最后决定重新启动我的计算机。现在它可以在 IE9 和 Firefox 上运行,但是,即使在清除 cookie 和缓存之后,Chrome 仍然会在打开/关闭周期之间保留我的凭据。

标签: session authentication laravel laravel-4


【解决方案1】:

要清除auth.basic会话也可以使用,

Auth::logout();

或者

Auth::clearUserDataFromStorage();

参见 API 文档here

【讨论】:

    【解决方案2】:

    转到config/session.php并设置'lifetime' => 0,然后重新启动Windows,在Firefox和IE9上修复了它,但在开发机器上的Chrome上没有。

    但是,当从另一台计算机(不是提供该页面的计算机)访问该页面时,Chrome 确实可以正常工作。

    考虑到没有人会从服务器访问该网站(一旦上线),我就接受它。

    【讨论】:

      【解决方案3】:

      我认为 chrome 会保存身份验证信息并发送任何请求。所以它可以与会话分开。

      您可以使用 chrome 开发工具 -> 网络选项卡进行检查。在任何请求中,chrome 都会自动发送身份验证信息。

      你可以检查

      auth.basic.once

      还有。

      【讨论】:

        猜你喜欢
        • 2017-11-08
        • 2014-08-16
        • 1970-01-01
        • 1970-01-01
        • 2017-10-05
        • 2015-01-17
        • 2015-03-12
        • 2021-09-07
        • 1970-01-01
        相关资源
        最近更新 更多