我有以下登录机制。我是laravel的新手。在从登录表单验证用户数据后,我需要登录用户。要记录用户,我需要将用户传递给Auth::login(/...variable..../)
方法。
问题是,令我困惑的是我应该将哪个变量传递给Auth::login
方法。
我有以下方法:
public function login(Request $request){
$data = $request->all();
$rules = array(
'username' => 'required',
'password'=>'required',
);
// Create a new validator instance.
$validator = Validator::make($data, $rules);
if($validator->fails()){
$errors=$validator->messages();
return Redirect::route('user');
}else{
if(Auth::attempt(['username'=>$request['username'],'password'=>$request['password']])){
Auth::login(); // what to pass ?
return redirect()->route('user.show',[$request['username']]);
}
}
}
答案 0 :(得分:0)
您无需致电Auth::login();
Auth::attempt($user_and_password);
已经足够了。它从db检查这些值,如果它们存在,则将启动经过身份验证的会话。
查看文档以获取更多信息:https://laravel.com/docs/master/authentication
答案 1 :(得分:0)
最简单的:
$user = DB::table('users')->first();
Auth::login($user);
默认情况下,此方法Auth::attempt()
会记录用户,但有时无法使用,您可以使用其他方法,例如Auth::loginUsingId(1);
,请阅读更多here
答案 2 :(得分:0)
在Laravel中Auth::login();
仅在您想要手动登录用户时使用,通常您必须将用户实例作为参数传递,如下所示:
Auth::login($user);
在您的情况下,您只需要调用静态方法尝试
if(Auth::attempt(['username'=>$request['username'],'password'=>$request['password']])){
return redirect()->route('user.show',[$request['username']]);
}
答案 3 :(得分:0)
我正在使用Laravel 5.2
在App\Http\Controllers\Auth
中,您可以看到AuthController
。所以你需要做的就是创建一个函数名authenticated
AuthController
public function authenticated(Request $request, $user)
{
\Log::info('message here...');
return redirect()->intended($this->redirectPath());
}