Laravel API过期了

时间:2017-06-07 11:00:45

标签: php .net laravel api session

在Laravel 5.4中,我在routes / web.php上创建了一些API。这些API由.NET应用程序调用。 第一个调用API是登录,之后,我在会话中放入了一些数据。 在调用其他API之前,我检查数据是否在会话中,但是在第一次调用(登录)之后,当我尝试调用第二个时,会话似乎被刷新/过期。

这是我的路线代码:

// API
Route::group(["prefix" => "api"], function() {
    // Login
    Route::post("login", "APIController@login");

    Route::group(["middleware" => "isNotAuthenticatedAPI"], function() {
        Route::group(["middleware" => "loginDBUser"], function() {
            // Importazioni
            Route::group(["prefix" => "importazioni"], function() {

                // Utenti
                Route::post("utenti", "APIController@importCustomers");
                // Attività (Abbonamenti)
                Route::post("attivita", "APIController@importSubscriptions");
                // Iscrizioni
                Route::post("iscrizioni", "APIController@importCustomersSubscriptions");
            });

            // Richieste
            Route::group(["prefix" => "richieste"], function() {
                // Ultima iscrizione
                Route::post("ultima_iscrizione/{subscription_external_id?}", "APIController@getLastCustomerSubscription");
            });
        });
    });
});

中间件isNotAuthenticatedAPI:

public function handle($request, Closure $next) {
        $res = [
            "result" => null,
            "errors" => [
            ]
        ];

        if (!$request->session()->get("user.api")) {
            $res["result"] = false;
            $res["errors"][] = [
                "code" => APIController::WARNING_SESSION_EXPIRED,
                "message" => trans("api.w_session_expired")
            ];
            return response()->json($res);
        }

        return $next($request);
    }

我的config / session.php:

'lifetime' => 120,

    'expire_on_close' => false,

我尝试将路由的代码放入routes / api.php中,但结果并没有改变。

2 个答案:

答案 0 :(得分:1)

请在config / session.php中设置属性 lifetime = value设置为增加会话时间 要么 其他此选项与set middle ware handler set" config(' session.lifetime')* 60; //最小到几小时的转换来解决这个问题

答案 1 :(得分:0)

如果您想继续在API中使用Session,请确保客户端(您的.NET应用程序)存储cookie并将其包含在以后的请求中。

测试问题是否为cookie的简单方法,尝试在浏览器中登录api并在此之后调用其他api。如果一切正常,那就是cookie问题。