2016-05-12 4 views
0

В документе Laravel 5,2 «Аутентификация Quickstart»:Как изменить поведение по умолчанию Laravel 5.2 аутентификации

«Laravel обеспечивает быстрый способ эшафота всех маршрутов и представления, которые необходимы для проверки подлинности с помощью одной простой команды ».

php artisan make:auth


После выполнения команды по умолчанию будет создавать много файлов о модели, контроллер, вид, таблиц баз данных и т.д. ...

Я обнаружил, что таблица «пользователей» создается, с колонками «id name email password», это здорово!

Как бы то ни было, если мое веб-приложение имеет разную структуру о «пользователе», например, я не использую уникальное свойство «email» для идентификации.

Как изменить поведение команды php artisan make:auth?

Спасибо!

ответ

1

users таблица миграция есть даже если не сделали php artisan make:auth. Итак, все, что вам нужно сделать, чтобы удалить ключ unique из столбца электронной почты, - это перейти к файлу миграции, который находится здесь:

database/migrations/create_users_table.

и удалить ключ unique из почтовых колонок, просто удалите его из кода как такового

$table->string('email'); 

Так оно и должно выглядеть следующим образом:

Schema::create('users', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->string('name'); 
      $table->string('email'); 
      $table->string('password'); 
      $table->rememberToken(); 
      $table->timestamps(); 
}); 
+0

спасибо за ответ. Но я не понимаю, когда я изменяю php-файл миграции, который автоматически создается laravel, отбрасывайте все столбцы «email». и запустите 'php artisan make: auth'. Я также получаю файлы, связанные с электронной почтой, такие как некоторые файлы blade.php. Означает ли это, что я должен удалить все вещи электронной почты, которые просто автоматически создаются после запуска команды make: auth? – billycat

+0

Нет, что вам нужно сделать после удаления уникального ключа из файла миграции, вы можете перейти на терминал и ввести «php artisan migrate: refresh», и он обновит базу данных новой миграцией. Вам больше не нужно делать 'php artisan make: auth', поскольку он просто генерирует маршруты и представления. Этот файл миграции не создается этой командой. –

1

Update ваших миграции как @Taylor Swift сказал.

Как вы упомянули. У вас нет «электронной почты» в вашей таблице пользователей.

Обновление перенастройки пользователя к следующему,

Schema::create('users', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->string('name'); 
      $table->string('password'); 
      $table->rememberToken(); 
      $table->timestamps(); 
}); 

AuthController по умолчанию использует электронную почту для идентификации пользователей

Laravel AuthController вне коробки позволяют пользователям войти в систему, используя адрес электронной почты, пароль ,

Поскольку вам не нужен адрес электронной почты. (Предполагая, что вы используете id как уникальное значение для каждого пользователя). Вы должны указать AuthController искать пользователей по идентификатору, а не по электронной почте.

Так открой AuthController, который находится в

App \ Http \ Контроллеры \ Auth \ AuthController

и добавьте следующую строку

protected $username = 'id'; 

Ваш контроллер Auth будет выглядеть

class AuthController extends Controller 
{ 

    use AuthenticatesAndRegistersUsers, ThrottlesLogins; 


    protected $username = 'id'; 


    public function __construct() 
    { 
     $this->middleware($this->guestMiddleware(), ['except' => 'logout']); 
    } 

}