2016-04-13 20 views
0

Giriş formumda doldurma formu için doldurma oturumu zaman aşımını ayarlamak istiyorum, doldurma formu doldurulduktan sonra, oturum süresi doldu formun kullanıcı tarafından doldurulmak üzere yeniden oluşturulması gerekiyorsa, uzun süre kontrol etmek istiyorum 'Bu yöntemi kullanıyorum ama olsun hatası:Laravel oturum açma zaman aşımı için doldurma formu

Kodum:

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(); 
    } 

    ... 
} 

hata: kodunun üzerindeki kullanım için

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

Hata: benim form artık kullanıcı tarafından doldurup hata Oturum Aradığınız yöntemi olmadığını bildiren form verilerini

TokenMismatchException 
+0

Üstte doğru sınıfı içe aktardığınızdan emin misiniz? –

+1

Laravel'in oturum deposunda "etkinlik" yöntemi yoktur, ayrıca oturumun ne zaman sona erdiğini güvenilir şekilde belirleyemezsiniz çünkü Laravel eski oturumu yenisiyle değiştirmiş olabilir. Bu yüzden pratik bir yol, bir oturum anahtarı eklemek, buna 'is_active' diyelim, ve sonra bu anahtarın mevcut olup olmadığını kontrol etmektir (eğer Oturum (= 'is_active')) {...}'. Eğer 'is_aktif' tuşu hala mevcutsa, oturum süresi dolmamış demektir, eğer anahtar yoksa, oturumun süresi dolmuş demektir ve bu anahtarı kaldırırsınız (ve geri koymanız gerekir). – Bogdan

+0

@JoelHinz evet efendim. 'use Session' yazdım, benim formumun –

cevap

0

göndermeye çalışırsanız. şöyle oturumu ayarlayarak lastActivityTime Uygulamak Session::get('lastActivityTime')

ile deneyin: Böyle bir şey yapabilirsiniz Session::set('lastActivityTime', time())

+0

"lastActivityTime" oturum anahtarının nereden geldiğini açıklamak isteyebilirsiniz, çünkü Laravel'in böyle bir şeyi yoktur. – Bogdan

+0

Her isteğin ardından bunu kendi başınıza uygulamalısınız: 'Oturum :: set ('lastActivityTime', time())' – Norgul

+0

Ardından, cevabın içeriklerini, insanların tahmin ettiğinize göre ne kastettiğinizi bilmelerini sağlayın. . – 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 
    } 

} 
İlgili konular