2015-07-20 21 views
21

Tôi bắt đầu làm việc với dự án bằng cách sử dụng laravel 5. Tôi nhận ra rằng nó hoạt động tốt trong thư mục cục bộ của tôi với phiên sau khi tôi đăng nhập vào trang web của mình, Nhưng tôi biết rằng tôi gặp sự cố khi lưu trữ dự án của mình lên máy chủ. Sau khi tôi đăng nhập mỗi lần, phiên không thể nhớ điều đó gây ra vấn đề cho tôi.Làm thế nào để có được phiên nhớ sau khi đăng nhập trong laravel 5?

public function postLogin() 
{ 
    $hit = 0; 

    if(Request::ajax()){ 
     $pw = Request::input('pw'); 
     if(!empty($pw)){ 
      $admin_pass = AdminPassword::first(['admin_pass']); 
      $ip_address = Request::ip(); 
      if(!empty($admin_pass) && trim($admin_pass->admin_pass) == trim($pw)){ 
       if(Auth::attempt(['username' => Request::input('username'), 'password' => Request::input('password'),'status'=>1])){ 
        try{ 
         $user = Auth::user(); 
         $user->last_login = date('Y-m-d H:i:s'); 
         $user->login_ip = $ip_address; 
         $user->save(); 
         $permissions = Auth::user()->permission; 
         if(!empty($permissions) && count($permissions) >0){ 
          session(['ROLE_PERMISSION'=>$permissions]); 
         } 
         $failed = FailedLogin::whereRaw('ip_address = INET_ATON(\''.$ip_address.'\')')->first(); 
         if(!empty($failed)){ 
          $failed->delete(); 
         } 
        }catch (\Exception $ex){} 
        $url = Request::session()->pull('url.intended', '/'); 
        return ['url'=>$url,'msg'=>'Successfully.','status'=>true,'hit'=>$hit]; 
       }else{ 
        $hit = $this->updateFailedLogin($ip_address,Request::input('username')); 
       } 
      }else{ 
       $hit = $this->updateFailedLogin($ip_address,Request::input('username')); 
      } 
     } 
    }else{ 
     return redirect()->route('login'); 
    } 
    return ['url'=>'','msg'=>'Try again.','status'=>false,'hit'=>$hit]; 
} 

Hãy giúp tôi thoát khỏi điều này.

Cảm ơn bạn rất nhiều.

+0

Kiểm tra cài đặt config/auth.php? Và sau đó nếu môi trường mới được thiết lập đúng theo nó. – koalaok

Trả lời

1

Nếu điều này hoạt động hoàn hảo tại địa phương và không chỉ một trong hai điều này. 1) bạn cần phải đặt quyền trên thư mục lưu trữ của bạn để ghi được. 2) khi bạn đăng nhập cục bộ trên trình duyệt và lưu cookie của bạn, nếu bạn cố gắng đăng nhập trực tuyến, nó sẽ ghi lại cục bộ vì cùng một cookie cơ bản nhưng trỏ đến các miền khác nhau. Vì vậy, bạn có thể nên sử dụng các trình duyệt khác nhau nếu bạn muốn làm việc cục bộ và trực tuyến cùng một lúc

0
  • trước hết là cài đặt máy chủ của bạn. kiểm tra quyền của thư mục lưu trữ. (sudo chmod -R 777 storage)
  • nếu không cố định. sau đó xóa bộ nhớ cache của trình duyệt và đăng xuất ứng dụng cục bộ của bạn và thử đăng nhập lại. có thể bạn có thể phá vỡ các mã sau khi đặt cookie.
1

Sử dụng mã dưới đây

setInterval(function(){ 
    $.get('/my/ping/route'); 
}, 1000 * 60); 

.ajaxError() 
-1

Tôi không chắc chắn những gì bạn đang cố gắng để làm, bạn nên thử điều này:

Session::put('url.intended', '/') 
0

Nếu bạn đang lưu trữ dự án của bạn, có thể bạn không có quyền truy cập hệ thống tệp phù hợp. Sử dụng trình điều khiển cơ sở dữ liệu phiên thay thế.

Tham khảo Laravel 5 store session in database/redis.

1

Những gì bạn có thể thử là Phiên: save(); Nó giải quyết vấn đề của tôi khi phiên không được chuyển sang khi chuyển hướng người dùng đến cổng thanh toán.

Từ những gì tôi nghe thấy là do một số gián đoạn trong yêu cầu HTTP gây ra.

1

Nếu các bản ghi lỗi trong lưu trữ/nhật ký không đưa ra bất cứ manh mối về các vấn đề như thư mục cho phép, kiểm tra tập tin .env của bạn trên máy chủ của bạn cho SESSION_DRIVER biến mà được nạp trong config/session.php để đảm bảo bạn có cơ chế kiên trì phù hợp dựa trên cấu hình máy chủ của bạn (tệp, cookie, cơ sở dữ liệu, apc, memcached, redis, v.v.).

Nếu cách đó không hiệu quả, hãy kiểm tra tệp config/session.php.Tôi đã thấy ai đó đặt thuộc tính suốt đời thành nghĩ rằng điều này sẽ làm cho phiên không xác định, nhưng thực tế nó đã gây ra vấn đề mà bạn đang gặp phải.

1

Vui lòng kiểm tra cách bạn đang lưu trữ phiên của mình.

Theo mặc định laravel sử dụng tệp dựa trên (storage/framework/sessions), hãy đảm bảo thư mục là có thể ghi.

Các vấn đề liên quan