Laravel 5.2 登录不持久
Laravel 5.2 login does not persist
在我的 laravel 应用程序中,我执行了 php artisan make:auth 并创建了所有文件以使身份验证工作。
我的AuthController.php代码:
/**
* Where to redirect users after login / registration.
*
* @var string
*/
protected $redirectTo = '/';
protected $loginPath = '/login';
protected $username = 'username';
/**
* Create a new authentication controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware($this->guestMiddleware(), ['except' => 'logout']);
}
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
return Validator::make($data, [
'username' => 'required|max:255|unique:users',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|min:6|confirmed',
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return User
*/
protected function create(array $data)
{
return User::create([
'username' => $data['username'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'hash-confirm' => md5($data['username']+Carbon::now()->resetToStringFormat()),
]);
}
}
我的User.php:
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'username', 'email', 'password', 'hash-confirm',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
我的routes.php:
Route::auth();
Route::get('/', 'HomeController@index');
Route::get('create', 'MessageController@create');
问题是,如果我输入的用户名和密码错误,它会告诉我这是错误的,当它正确时它会重定向我,但是当我在登录后到达该页面时,Auth::guest() 是 true 并且 Auth::user() 为空,因此不会创建会话。
我用的是最新版的laravel,所以不需要把中间件"web"组放在routes上。
谢谢。
对于有相同问题的用户,请将用户 table 的 "id" 字段更改为:
$table->increments("id");
我 $table->string("id")
能够自己生成 ID,但它没有保留登录。
在我的 laravel 应用程序中,我执行了 php artisan make:auth 并创建了所有文件以使身份验证工作。
我的AuthController.php代码:
/**
* Where to redirect users after login / registration.
*
* @var string
*/
protected $redirectTo = '/';
protected $loginPath = '/login';
protected $username = 'username';
/**
* Create a new authentication controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware($this->guestMiddleware(), ['except' => 'logout']);
}
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
return Validator::make($data, [
'username' => 'required|max:255|unique:users',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|min:6|confirmed',
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return User
*/
protected function create(array $data)
{
return User::create([
'username' => $data['username'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'hash-confirm' => md5($data['username']+Carbon::now()->resetToStringFormat()),
]);
}
}
我的User.php:
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'username', 'email', 'password', 'hash-confirm',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
我的routes.php:
Route::auth();
Route::get('/', 'HomeController@index');
Route::get('create', 'MessageController@create');
问题是,如果我输入的用户名和密码错误,它会告诉我这是错误的,当它正确时它会重定向我,但是当我在登录后到达该页面时,Auth::guest() 是 true 并且 Auth::user() 为空,因此不会创建会话。 我用的是最新版的laravel,所以不需要把中间件"web"组放在routes上。
谢谢。
对于有相同问题的用户,请将用户 table 的 "id" 字段更改为:
$table->increments("id");
我 $table->string("id")
能够自己生成 ID,但它没有保留登录。