2013-07-13 3 views
1

Laravel 4에서 자체 세션 처리기를 사용하려고합니다. Laravel 4 세션을 확장하여 어디서든 지정된 클래스를 사용하여 데이터를 읽고 쓰거나 삭제할 수 있습니다.Laravel 4 - 사용자 지정 세션 처리기

답변

-1

첫째, 만들고 응용 프로그램의 장소 sessionpayload.php/라이브러리 폴더와 같은 확장 :

class Sessionpayload extends \Laravel\Session\Payload { 

//stuff 

} 

을 그리고, 만들고 응용 프로그램의 장소 session.php/라이브러리 폴더를 그런 식으로 확장 :

class Session extends \Laravel\Session { 


public static function start($driver) 
{ 
    static::$instance = new Sessionpayload(static::factory($driver)); 
} 

} 

그런 다음 선 아래 주석 처리한다 또는 당신이 당신의 클래스에 대한 네임 스페이스를 사용하는 경우는 변경할 수 있습니다

'Session'  => 'Laravel\\Session', 
application/config/application.php의

. Laravel 확장에 Laravel 워드 프로세서 밖으로

+0

Laravel 4에서이 기능이 작동합니까? Laravel 4에 애플리케이션 또는 라이브러리 폴더가 표시되지 않습니다. – Louis

+1

[composer] (http://getcomposer.org)를 사용하여 프레임 워크 (laravel/framework)를 설치해야합니다. . 당신은 아마도 해골 앱 (laravel/laravel)을 가지고있을 것입니다. – fideloper

+1

작곡가가 혼란스러운 점이 아니라면, 나는 당신이 찾고있는 대답을 믿기 만하면 라이브러리 디렉토리를 만들 수 있다는 것입니다. 가장 좋은 경우는 라이브러리 디렉토리를 만들고 composer.json 파일을 통해 PSR-0 자동 로딩을 설정하는 것입니다. – fideloper

0

점검 : http://laravel.com/docs/4.2/extending#session

당신은 초기에 새로운 세션 핸들러를 부팅하고 앱 설정에서 원래 SessionServiceProvider 참조 아래에 배치하는 새로운 ServiceProvider를 만들 수 있습니다. Ex. 를 분명히/세션/SessionServiceProvider.php과 ServiceProvider 워드 프로세서 (http://laravel.com/docs/master/providers)에서

use Illuminate\Support\ServiceProvider; 

class MySessionServiceProvider extends ServiceProvider { 

    /** 
    * Register my custom service provider. 
    * 
    * @return void 
    */ 
    public function register() 
    { 
     $this->registerMySessionHandler(); 
    } 

    /** 
    * Register your session manager instance. 
    * 
    * @return void 
    */ 
    protected function registerMySessionHandler() 
    { 
     $this->app->bindShared('mysession', function($app) 
     { 
      return new MySessionHandler($app); 
     }); 
    } 

봐 당신은 더 많은 정보를 필요로하는 경우.

이 세션 클래스를 작성 :

class MySessionHandler implements SessionHandlerInterface { 

    public function open($savePath, $sessionName) {} 
    public function close() {} 
    public function read($sessionId) {} 
    public function write($sessionId, $data) {} 
    public function destroy($sessionId) {} 
    public function gc($lifetime) {} 

} 

는 그런 다음 세션을 사용하여 세션 클래스를 확장 할 수 있습니다 : 나는이 당신의 시작 파일에가는 생각 (() 메소드를 확장하지만, 그 날을 인용하지 않습니다) : 세션 드라이버가 등록되면

Session::extend('mysession', function($app) 
{ 
    return new MySessionHandler; 
}); 

, 앱/설정/session.php 구성 파일에서 mysession 드라이버를 사용해야합니다.