Laravel几秒后自动退出?

gsk*_*gsk 6 php session laravel angularjs laravel-5

我正在使用Laravel 5开发Web应用程序,使用RESTFUL apis开发angularJs.

使用middleware到身份验证目的.我的问题是在同时发送几个请求后,系统自动注销并从laravel端发送401异常.

API基础控制器:

class ApiController extends BaseController {

    use DispatchesCommands, ValidatesRequests;

    function __construct() {
        $this->middleware('api.auth');
    }

}
Run Code Online (Sandbox Code Playgroud)

中间件:

class APIMiddleware {

    /**
     * Handle an incoming request.
     *
     * @param  Request  $request
     * @param  Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next) {
        if (!Auth::check()) {
            abort(401, "Unauthorized");
        }
        return $next($request);
    }

}
Run Code Online (Sandbox Code Playgroud)

登录控制器

public function login(LoginRequest $request) {
    if (Auth::check()) {
        Auth::logout();
    }

    if (Auth::attempt(['email' => $request->input('email'), 'password' => $request->input('password')], $request->input('is_remember'))) {
        return array(true);
    } else {
        abort(401, "Invalid email & password");
    }
}
Run Code Online (Sandbox Code Playgroud)

几个请求消失后,Server注销并发送401异常.我坚持这个问题.

Ash*_*nch 15

现在,我不能100%确定(并根据您的设置我甚至不能说我90%确定),但改变后,我session_driverfiledatabase我似乎已经修复了这个问题-那就是如果是同样的问题.

我想用我的应用程序做同样的事情 - 这是在一个页面的启动,我正在提出6请求(这是开发,我将把它改为一个所以请不要哭).如果我加载此页面,它可以使用大约3或4个请求,然后其他2-3个回复并返回unauthorised响应.它也只在需要的请求时发生middleware => auth.

因此,我的理论是为什么会发生这种情况:因为默认情况下,会话保存在文件中 - 一次发出多个请求意味着文件一次打开6次 - 可能会弄乱它(取决于你的机器).因此,将会话更改为数据库(一次有数千个请求),可以正常工作!

解:

  1. 转到您的.env文件并切换SESSION_DRIVER=fileSESSION_DRIVER=database.
  2. 接下来,您需要创建会话迁移:php artisan session:table.
  3. 现在composer dump-autoload好好练习.
  4. 最后是migrate(php artisan migrate).

注意:我不是100%肯定,但如果是这样,但对我来说这个解决方案有效.我也知道这个问题真的很老了,但是我和我一起工作的开发人员都遇到过这个问题而且似乎没有解决方案,所以就好像我发布这个问题一样.


ako*_*ako 5

设法弄清楚..由于我几乎所有项目都使用laravel,所以我忘记更改会话名称,结果,一个会话覆盖另一个会话,导致自动注销..所以如果你有多个laravel正在运行的项目,确保它们都有不同的会话名称。希望这对将来的人有帮助! 这是关于此问题的 Laracast 线程。

对我来说,这是解决问题的过程:

  1. 清除了本地主机的浏览器 cookie。
  2. cookie更改了中键的值app/session.php
  3. php artisan config:clear