繁体   English   中英

Laravel API过期的会话

[英]Laravel API expired session

在Laravel 5.4中,我在route / web.php上创建了一些API。 这些API由.NET应用程序调用。 第一个调用的API是登录名,之后,我在会话中添加了一些数据。 在调用其他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,

我试图将路线的代码放入route / api.php,但结果没有改变。

请在config / session.php生命周期=值中设置属性,以增加会话超时时间,或者通过设置中间件处理程序将此选项设置为其他值,设置为“ config('session.lifetime')* 60; //分钟到小时的转换以解决此问题问题

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

一种简单的方法来测试您的问题是否是cookie,请尝试在浏览器中登录您的api,然后再调用其他api。 如果一切正常,那就是cookie问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM