我是laravel的新手,我在认证方面遇到了困难。我不知道这段代码有什么问题,有人可以帮我解决这个问题吗?我在Stackoverflow中已经阅读了很多答案,到目前为止,它们都没有奏效。
为了测试Auth::attempt()
,我制作了一个简单的代码。我所遵循的大多数教程都使用这个简单的代码。在Auth工作之前我还需要配置其他什么吗?为什么这么复杂?
P.S。 我还测试了它是否生成了正确的哈希,似乎没问题。
控制器:
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'];
}
更新...下面是我的用户表的迁移脚本。
我有一个单独的登录管理员和用户,也许这是导致问题。它可能没有查看正确的表,因为admin auth可以工作。如何显示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');
});
});
答案 0 :(得分:0)
我怀疑您没有正确设置数据库。
为了使Eloquent ORM有效,它必须有一个数据库。相关配置应该在config / database.php,然后你应该检查这样的表是否存在。另一方面,如果不希望连接到config / database.php中的默认数据库,则可能无法在Eloquent中正确设置连接
小点,还要确保您的config / auth.php正确执行。 auth.php应该在默认设置下使用您的代码。