在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中,但结果并没有改变。
答案 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问题。