[컴][웹] lumen 에서 session 사용하기



lumen 에서 session 사용하기

  • lumen version: 5.4.*

config/session.php

session.php 는 laravel 의 config 에서 를 가져와서 <lumen>/config/ 에 copy 하면된다.

그리고 이 session.php 를 load 하려면 boostrap/app.php 에 code 를 추가해야 한다.
$app->configure('session');


illuminate/session

illuminate/session 이 필요하다. 일단 설치를 해주자.
composer require illuminate/session


bootstrap/app.php

StartSession Middleware

bootstrap/app.php 에 middleware 를 추가해주자.
$app->middleware([
    \Illuminate\Session\Middleware\StartSession::class,
]);

SessionServiceProvider

SessionServiceProvider를 등록해주자.
$app->register(Illuminate\Session\SessionServiceProvider::class);


binding

$app->bind(Illuminate\Session\SessionManager::class, function ($app) {
    return $app->make('session');

});

위처럼 해주지 않으면 아래와 같은 exception 이 발생한다.
Illuminate\Contracts\Container\BindingResolutionException: Unresolvable dependency resolving [Parameter #0 [ <required> $app ]] in class Illuminate\Support\Manager


session 폴더 권한

windows 에서는 sessions 폴더를 만들어놔야 한다. 그렇지 않으면 ErrorException in Filesystem.php 이 발생한다. linux 에서도 만들어 놔야 하는지는 모르지만, 최소한 write 권한 설정은 해줘야 할 듯 하다.
<lumen>\storage\framework\sessions

session 사용법

당연한 이야기지만 session_domain 설정이 제대로 되어 있어야 session 이 동작한다.

.env file

SESSION_DOMAIN=.example.com
APP_NAME=company_name

Controller

$session = $request->session();
$session->put('sample','hello');
echo $session->get('sample');

login

view




References

  1. laravel - How can I use Illuminate\Session\Middleware\StartSession::class on lumen 5.2 - Stack Overflow
  2. laravel - Enabling session in lumen framework - Stack Overflow
  3. What's the best way to start the session manually?

댓글 없음:

댓글 쓰기