Larabel에서 세션 값을 검색하면 null이 반환됩니다.
Laravel 어플리케이션에서 세션 값을 설정 및 취득하려고 합니다.Vue Js 프런트엔드가 세션 값을 설정하는 Larabel 엔드포인트에 API 콜을 발신하고 있습니다.Larabel 엔드포인트의 메서드를 포함하는 컨트롤러는 다음과 같습니다.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
Use Session;
use App\User;
class UserController extends Controller
{
public function adduser(Request $request) {
$user = User::where( 'sub', $request->sub )->first();
if(!$user) {
$user = new User();
$user->nickname = $request->nickname;
$user->name = $request->name;
$user->sub = $request->sub;
$user->api_token = $request->api_token;
$user->save();
}
$user->api_token = $request->api_token;
$user->save();
return response()
->json([
'done' => $user->api_token
]);
}
//The endpoint for this method is http://localhost:8000/api/set
public function setSession(Request $request) {
$request->session()->put('info', 'testing vue client again');
Session::save();
return response()
->json([
'done' => session('info')
]);
}
//The endpoint for this method is: http://localhost:8000/api/get
public function getSession(Request $request) {
$value = $request->session()->get('info');
return response()
->json([
'done' => $value
]);
}
}
세션 데이터는 정상적으로 설정되어 있습니다만, 이 데이터를 취득하려고 하면,getSession()
메서드가 null을 반환합니다.세션 데이터를 검색하는 데 사용한 Vue Js/axios 코드 조각입니다.
axios({
method: 'get',
url: 'http://localhost:8000/api/get',
}).then((res) => {
console.log(res.data)
})
이 문제를 해결하려면 어떻게 해야 하나요?고마워요.
문제가 재현되어 쿠키에 문제가 있는 것 같습니다.이게 날 속였어
앱\Http\미들웨어\Encrypt Cookies.php
protected $except = [
'laravel_session',
];
바꾸다laravel_session
고객님께config('session.cookie')
가치.
갱신 시 세션 ID 변경 참조(Larabel 5.4 + AngularJS 1.6)
routes/api.php 파일로부터의 루트에는 디폴트로StartSession
API 호출이 스테이트리스로 간주되기 때문에 미들웨어가 필요합니다.이 미들웨어는 다음과 같이 추가할 수 있습니다.EncryptCookies
api middleware group으로 이동합니다.app/Http/Kernel.php
다음과 같은 파일(정확한 시퀀스):
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
'throttle:60,1',
'bindings',
],
];
저는 좋아요.또, 셋업 할 수 있다고 생각합니다.api
정확히 로 분류하다.web
그룹화해 주세요.
또한 세션 변수를 새 구성으로 다시 설정하는 것도 잊지 마십시오.
언급URL : https://stackoverflow.com/questions/53024651/retrieving-a-session-value-in-laravel-returns-null
'IT이야기' 카테고리의 다른 글
java.nio.파일클래스 경로 리소스의 경로 (0) | 2022.06.20 |
---|---|
스토어 인스턴스를 작성하기 전에 Vue.use(Vuex)를 호출해야 합니다. (0) | 2022.06.20 |
.vue 파일에서 모듈 증강이 작동하지 않습니다. (0) | 2022.06.20 |
사용 시 select2에서 선택한 텍스트를 얻는 방법사용 시 select2에서 선택한 텍스트를 얻는 방법 (0) | 2022.06.20 |
Hibernate hbm2dl에서 사용 가능한 값은 얼마입니까?자동 설정 및 기능 (0) | 2022.06.20 |