douping3427 2014-08-10 18:41
浏览 231
已采纳

Laravel Auth :: onceBasic()记住身份验证

I'm trying to do something similar to here, but not for an API: Fully disable cookies in Laravel 4 API

Basically, I have a login section where users can download specific files and do other stuff. Before they can download, I want them to have to enter the username & password again as an additional security (think the same way some banks will do for you to download your statements.) My standard auth is working fine. I've managed to implement Auth::onceBasic() okay, but it's remembering I'm logged in and won't ask me more than once (even on closing the browser!).

That's when I found the above link about setting the session.driver to array, but it doesn't seem to work. I've turned off my primary login so that the Auth::onceBasic() is the only authentication and it is still remembering me when I visit the page more than once.

Here's my code:

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();
});

...and finally DownloadsController:

public function show($id)
{
    dd(Session::all());
}

my output shows the session as an array and empty, but it's still acting like it's authenticated so I'm not sure where I'm going wrong. I've tested in chrome and firefox with the same results.

  • 写回答

1条回答 默认 最新

  • douren7179 2014-08-12 01:14
    关注

    Laravels Auth::onceBasic() uses HTTP basic authentication, which isn't designed to handle your use case. With basic authentication the user will remain logged in until the browser is closed.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?