我是laravel的新手,现在我想使用laravel Auth创建一个登录页面。
我的用户表中有五个列,分别是userid,用户名,remember_token,created_at和updated_at。
用户输入用户名和密码后,数据将被发送到LoginController中的authenticate()。如果用户名和密码正确,则用户将被重定向到/ successlogin,并且用户名将打印在/ successlogin中。
我已经测试了我的代码。可以将用户重定向到/ successlogin url,但是似乎用户在重定向后立即注销。
这是我的代码: LoginController
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Auth;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use App\User as User;
use Hash;
class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest')->except('logout');
}
public function username()
{
return 'username';
}
public function id()
{
return 'user_id';
}
public function authenticate(Request $request)
{
$this->validate($request, [
'username' => 'required',
'password' => 'required',
//'captcha' => 'required|captcha'
]);
$remember = $request->input('remember');
if (Auth::attempt(['username' => $request->input('username'), 'password' => $request->input('password')], $remember))
{
return redirect('successlogin');
}else{
return back()->with('error', 'Wrong Login Details');
}
}
function successlogin()
{
return view('successlogin');
}
public function logout()
{
Auth::logout();
return redirect()->to('/login');
}
}
successlogin.blade.php
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
@if(isset(Auth::user()->username))
{{ Auth::user() }}
@else
<p>no message</p>
@endif
</body>
</html>
User.php
<?php
namespace App\Models;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
public $timestamps = false;
protected $table = 'user';
protected $fillable = [
'username',
'password',
'remember_token'
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/*public function getAuthPassword()
{
return $this->password;
}
public function setPasswordAttribute($password)
{
$this->attributes['password'] = bcrypt($password);
}*/
}
重定向到/ successlogin后,仅打印“ no message”。为什么重定向后登录用户数据被破坏?非常感谢你!