Laravel 5 - 如何在没有电子邮件确认的情况下进行身份验证?
Laravel 5 - how to authenticate without email confirmation?
我正在 Laravel 5 中创建一个简单的身份验证系统。我有使用 Laravel 4 编写的身份验证代码作为基础。
我的问题是,
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'confirmed' in
'where clause' (SQL: select * from users
where email
=
myemail@gmail.com and confirmed
= 1 limit 1)
看起来 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'];
}
最后,我的用户 table 迁移是:
<?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
];
我正在 Laravel 5 中创建一个简单的身份验证系统。我有使用 Laravel 4 编写的身份验证代码作为基础。
我的问题是,
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'confirmed' in 'where clause' (SQL: select * from
users
whereconfirmed
= 1 limit 1)
看起来 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'];
}
最后,我的用户 table 迁移是:
<?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
];