簡體   English   中英

Laravel 5-如何在沒有電子郵件確認的情況下進行身份驗證?

[英]Laravel 5 - how to authenticate without email confirmation?

我正在Laravel 5中創建一個簡單的身份驗證系統。我已經使用Laravel 4編寫了身份驗證代碼,並將其用作基礎。

我的問題是

SQLSTATE [42S22]:找不到列:1054“ where子句”中的“ confirmed”未知列(SQL:從email = myemail@gmail.com且confirmed = 1個限制1的users中選擇*)

看來Laravel正在查看我的電子郵件是否已驗證。 但是我不需要為此應用程序執行注冊和驗證過程。 我的問題是,我如何告訴laravel 不要擔心電子郵件確認?

我的身份驗證代碼如下所示:

public function postAuthenticate()
{
    // Fetch posted credentials

    $email = \Request::input('email');
    $password = \Request::input('password');
    $remember = \Request::has('_remember');

    $credentials = [
        'email' => $email,
        'password' => $password,
        'confirmed' => 1
    ];

    // Attempt to log in user
    if (\Auth::attempt($credentials, $remember))
    {
        return \Redirect::intended('dashboard');
    }

    // If this code was reached, it means that the user failed to authenticated.  
    // In this case, redirect back to the login page with errors.

    $messages = new Illuminate\Support\MessageBag;
    $messages->add('Authentication Error', 'Sign in failed.');


    return \Redirect::to('/login')
        ->withInput()   
        ->with('errors', $messages);
}

我的用戶模型如下所示:

<?php namespace App;

use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;

class User extends Model implements AuthenticatableContract, CanResetPasswordContract {

    use Authenticatable, CanResetPassword;

    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'users';

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = ['name', 'email', 'password'];

    /**
     * The attributes excluded from the model's JSON form.
     *
     * @var array
     */
    protected $hidden = ['password', 'remember_token'];

}

最后,我的用戶表遷移是:

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration {

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function(Blueprint $table)
        {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password', 60);
            $table->rememberToken();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('users');
    }

}

謝謝!

您必須從$credentials刪除'confirmed' => 1

例如:

$credentials = [
        'email' => $email,
        'password' => $password
];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM