【发布时间】:2014-10-16 10:39:31
【问题描述】:
我正在尝试做类似于这里的事情,但不是针对 API:Fully disable cookies in Laravel 4 API
基本上,我有一个登录部分,用户可以在其中下载特定文件并执行其他操作。在他们下载之前,我希望他们必须再次输入用户名和密码作为额外的安全措施(想想一些银行会为您下载报表的相同方式。)我的标准身份验证工作正常。我已经设法实现Auth::onceBasic() 好的,但它记得我已经登录并且不会多次询问我(即使关闭浏览器!)。
那时我找到了上面关于将session.driver 设置为array 的链接,但它似乎不起作用。我已经关闭了我的主要登录,因此Auth::onceBasic() 是唯一的身份验证,并且当我多次访问该页面时它仍然会记住我。
这是我的代码:
routes.php:
Route::get('downloads/{file}', 'DownloadsController@show')->before('auth.basic');
filters.php:
Route::filter('auth.basic', function()
{
Config::set('session.driver', 'array');
return Auth::onceBasic();
});
...最后是 DownloadsController:
public function show($id)
{
dd(Session::all());
}
我的输出将会话显示为一个数组并且为空,但它仍然表现得好像它已经过身份验证,所以我不确定我哪里出错了。我已经在 chrome 和 firefox 中进行了测试,结果相同。
【问题讨论】:
-
这不是 laravel 的问题,它只是基本身份验证的设计方式。用户保持登录状态,直到浏览器关闭。 stackoverflow.com/questions/18295994/…
-
@Jeemusu - 好吧,很公平。没有意义,但这似乎是来自链接问题的共识,它是链接资源。如果您添加答案,将标记为已解决。谢谢
-
另外,为什么不强制用户在每次尝试访问该页面时使用单独的登录方法。不要使用 laravel
auth::attempt,而是创建一个新方法来简单地检查凭据,如果它通过,则设置一个新的会话变量。 -
我会试一试。 :)
标签: php authentication laravel-4