2016-04-13 18 views
0

ログインフォームに記入フォームを記入するためのチェックセッションタイムアウトを設定したいと思います。記入フォームの後に、セッションが切れてしまったフォームをユーザーが記入する必要があります。 「この方法を使用してm個が、私はエラーを取得:Laravel check session timeout fill form

マイコード:

public function checkAccount(CheckAuthenticationRequest $request) 
{ 

    if ((time() - Session::activity()) > (Config::get('session.lifetime') * 60)) 
    { 
     return redirect()->back() 
      ->withErrors('Login form no longer fill, you must be fill again') 
      ->withInput(); 
    } 

    ... 
} 

エラー:コード上で使用するために

call_user_func_array() expects parameter 1 to be a valid callback, class 'Illuminate\Session\Store' does not have a method 'activity'

エラー:は私のフォームは、もはやユーザーが記入しないとエラーがセッションが呼び出しているメソッドを持っていないと述べているフォームデータ

TokenMismatchException 
+0

正しいクラスを上にインポートしてもよろしいですか? –

+1

Laravelのセッションストアには 'activity'メソッドがありません。また、Laravelがすでに古いセッションを新しいセッションに置き換えてしまったために、セッションの期限が切れていると確実に判断できません。セッションキーを追加し、それを 'is_active'と呼んで、' if(Session :: has( 'is_active')){...} 'キーが存在するかどうかをチェックしてみましょう。 'is_active'キーがまだそこに残っている場合は、セッションが期限切れでないことを意味します。キーがない場合、セッションが期限切れであり、そのキーが削除されたことを意味します。 – Bogdan

+0

@JoelHinzはいサー。私はセッションを使用しました;私のクラスのトップ –

答えて

0

を送信しようとした場合。そのようにセッションを設定することにより、lastActivityTimeを実装Session::get('lastActivityTime')

で試してみてください:あなたはそのような何かを行うことができますSession::set('lastActivityTime', time())

+0

Laravelにはそのようなことがないので、 'lastActivityTime'セッションキーがどこから来ているのかを説明したいかもしれません。 – Bogdan

+0

リクエストごとに独自に実装する必要があります: 'Session :: set( 'lastActivityTime'、time())' – Norgul

+0

そして、推測するのではなく、 。 – Bogdan

0

class formController extends Controller{ 

    /**FUNCTION THAT RETURNS THE FORM VIEW**/ 
    public function showForm(Request $request) { 
     $request->session()->put("opendate", Carbon::now()); //put current timestamp in the session 

     return view("myform"); 
    } 

    /**FUNCTION THAT HANDLES THE FORM DATA**/ 
    public function public function checkAccount(Request $request){ 
     if(!$request->session()->has("opendate")) return abort(400); 

     $open_date = $request->session()->pull("opendate"); 

     //check the difference between data in the session and now 
     if($opendate->diffInMinutes(Carbon::now()) > 10) //<-- expire minutes here) 
      return redirect()->back() 
          ->withErrors("Login form no longer fill, you must be fill again") 
          ->withInput(); 

     //success code here 
    } 

}