【发布时间】:2015-12-10 08:08:27
【问题描述】:
我是 laravel 的新手,我被困在身份验证中。我不知道这段代码有什么问题,有人可以帮我解决这个问题吗?我已经在 Stackoverflow 中阅读了很多答案,但到目前为止没有一个有效。
我编写了一个简单的代码来测试Auth::attempt()。我遵循的大多数教程都是使用这个简单的代码。在 Auth 工作之前我还需要配置其他东西吗?为什么这么复杂?
附: 我还测试了它是否生成了正确的哈希值,看起来没问题。
控制器:
public function index()
{
$user = new User;
$user->email = 'q21@q.com';
$user->password = Hash::make('123456');
$user->save();
$userData = array('email' => 'q21@q.com', 'password' => '123456');
var_dump(Auth::attempt($userData));
}
型号:
<?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;
protected $table = 'users';
protected $fillable = ['email', 'password'];
protected $hidden = ['password', 'remember_token'];
}
更新... 下面是我的用户表迁移脚本。
我有一个单独的管理员和用户登录名,这可能是导致问题的原因。它可能没有查看正确的表,因为管理员身份验证有效。如何显示 Auth 中使用的 SQL?
用户表迁移脚本
Schema::create('users', function(Blueprint $table)
{
$table->increments('id');
$table->string('firstname');
$table->string('lastname');
$table->string('email')->unique();
$table->string('password');
$table->timestamps();
});
路线:
Route::group(['prefix' => 'api'], function()
{
Route::post('user/login','UserController@login');
Route::group(['middleware' => ['jwt.auth','jwt.refresh']], function()
{
Route::resource('user','UserController');
});
});
Route::group(['prefix' => 'admin'], function()
{
Route::get('/', 'AdminController@index');
Route::get('login', 'AdminController@postlogin');
Route::post('login', 'AdminController@postlogin');
Route::get('logout', function(){
Auth::logout();
return Redirect::to('admin');
});
Route::group(['middleware' => ['auth']], function()
{
Route::resource('messages', 'MessageController');
});
});
【问题讨论】:
-
为什么要在注册表中使用
Auth::attempt? -
您的迁移是什么样的?
-
@aldrin27 因为我想在注册后自动登录用户。
-
如果您想自动登录用户,请不要使用身份验证尝试。只需在您的仪表板页面中重定向他。
-
@aldrin27 感谢您帮助我。我发现了问题。我通过在构造函数中添加
Config::set('auth.model', 'App\AdminUser');覆盖了 Auth 数据库配置。现在它使用的是 AdminUser 模型而不是 User 模型。
标签: php authentication laravel-5