2014-04-23 28 views
25

Tôi đang sử dụng khung công tác của laravel 4. Khi tôi sử dụng chuyển hướng sau khi đăng xuất Auth ::(), chuyển hướng không hoạt động. Tôi đã sử dụng View :: make(), nhưng cũng giống như "Rất tiếc, có vẻ như đã xảy ra sự cố." lỗi ném lên.Chuyển hướng Laravel với đăng xuất không hoạt động

public function getLogout() { 
     Auth::logout(); 
    return Redirect::to('users/login')->with('message', 'Your are now logged out!'); 
} 

Đây là mã đăng xuất. Tôi đang dùng. Một số xin vui lòng giúp tôi với điều này.

routes.php

Route::get('/', function() 
    { 
return View::make('hello'); 
    }); 

Route::controller('users', 'UsersController'); 

HTML

  @if(!Auth::check()) 
       <li>{{ HTML::link('users/register', 'Register') }}</li> 
       <li>{{ HTML::link('users/login', 'Login') }}</li> 
      @else 
       <li>{{ HTML::link('users/logout', 'logout') }}</li> 
      @endif 

Đây là những gì tôi chương trình gỡ lỗi.

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'remember_token' in 'field list' (SQL: update `users` set `updated_at` = 2014-04-23 11:30:41, `remember_token` = jSMcfpPnCPrKgwqfhB2tEEEd8h8x6d72viz67MbVzBD27A2G7AH8yWQo1ORf where `id` = 1) 
+0

Bạn có thể hiển thị các tuyến đường? Chế độ xem 'users.login' có tồn tại không? Vì mã của bạn trông khá giống với phương thức đăng xuất của tôi ... –

+2

Để có được thông tin gỡ lỗi hữu ích được hiển thị trên máy đang phát triển của bạn, bạn nên thêm ''debug' => true'' vào' app/config/app.php ''(hoặc' app/config/local/app.php'') và/hoặc thêm tên máy của máy dev của bạn vào mảng môi trường trong 'bootstrap/start.php'. Xem http://laravel.com/docs/configuration#environment-configuration để biết thêm chi tiết. – Quasdunk

+0

@ pc-shooter có chế độ xem đó tồn tại. chuyển hướng hoạt động tốt mà không có Auth :: logout() – winnyboy5

Trả lời

51

Bạn có thể thiếu ký tự nhớ_token cho bảng người dùng.

xem: http://laravel.com/docs/upgrade#upgrade-4.1.26

Laravel đòi hỏi "remember_token nullable của VARCHAR (100), TEXT, hoặc tương đương với bảng người dùng của bạn."

Cập nhật cho tài liệu mới

Laravel 4.2 và ký ngay bây giờ có một phương pháp mà bạn có thể sử dụng với người xây dựng giản đồ của bạn để thêm cột này.

$table->rememberToken();

Laravel Docs - Schema - Adding Columns

+7

Nếu chi tiết hơn - bạn phải chỉnh sửa tệp di chuyển của mình và thêm: $ table-> text ('remember_token') -> nullable(); và sau đó chạy lại di chuyển – Heihachi

+0

Điều này có thể được thực hiện theo cách tự động như với dấu thời gian không? ($ table-> timestamps();) –

+1

@TomBusby thực sự các tài liệu cho Laravel 4.2 có một phương thức cho mã thông báo này ngay bây giờ. $ table-> rememberToken(); – lagbox

1

đây là một mẫu mã từ làm thế nào tôi xử lý đăng xuất người dùng trên hệ thống của tôi sử dụng Laravel 4. Tôi không chắc chắn lý do tại sao bạn không làm việc và nó sẽ là tuyệt vời để xem tuyến đường của bạn, và mã html mà cũng kích hoạt quá trình đăng xuất.

Các Route

Route::get('logout', array('uses'=>'[email protected]')); 

Nút HTML/link kích hoạt các logout

<a href="{{URL::to('logout')}}" class="btn btn-danger btn-sm">Logout</a> 

Controller Chức năng xử lý các logout

public function logout(){ 

    Auth::logout(); 

    return Redirect::to('login'); 
} 

Ở đây bạn đã nhận được! Bạn nên thay thế bằng tên tuyến đường và chức năng điều khiển của mình. Điều này sẽ làm việc! Nếu không, hãy đăng tuyến đường và mã html của bạn! Chúc mừng!

+0

Không, nó không hoạt động. Tôi nghĩ rằng vấn đề nằm trong chức năng getLogout – winnyboy5

+0

Cố định nó nhờ sự giúp đỡ mặc dù ........ :) – winnyboy5

+1

Tuyệt vời! Vui mừng bạn đã sửa nó! Chúc mừng! – mandeeya

1

Do bản cập nhật Laravel hiện tại có phải là một "remember_token" cột trong bảng dùng. Điều này giải quyết vấn đề.

0

Tôi đã học được rằng tôi đã nhận được báo lỗi logout trong ứng dụng của tôi bởi vì tôi đã sử dụng

Route::post('logout', array('uses' => '[email protected]')); 

Chỉ cần nhớ để sử dụng sau đây để thay thế.

Route::get('logout', array('uses' => '[email protected]')); 

Điều này làm việc suôn sẻ.

8

Nếu bạn có Laravel 4.2 bạn có thể làm điều này:

Command Line:

php artisan migrate:make add_remember_token_to_users_table --table="users" 

Sau khi mở ứng dụng tập tin/cơ sở dữ liệu/di cư/2014_10_16_124421_add_remember_token_to_users_table này và chỉnh sửa nó như thế này:

public function up() 
{ 
    Schema::table('users', function(Blueprint $table) 
    { 
     $table->rememberToken(); 
    }); 
} 

public function down() 
{ 
    Schema::table('users', function(Blueprint $table) 
    { 
     $table->dropColumn('remember_token'); 
    }); 
} 
+0

"di chuyển: làm" là sai, chúng ta cần gõ "make: migration". Cảm ơn bạn đã trả lời. –

0

Bạn cần thêm cột updated_at vào bảng SQL user_tbl của mình. Nếu bạn không muốn sử dụng nó. bạn cũng có thể tắt dấu thời gian trong mô hình của mình.

1

cho vấn đề của bạn, bạn có thể vượt qua giá trị null hoặc bạn có thể tắt giá trị remember_token của bạn trong file php mô hình của bạn như

public $remember_token=false; 
Các vấn đề liên quan