在身份验证后记录用户

时间:2016-03-22 08:15:55

标签: php laravel authentication

我有以下登录机制。我是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']]);
            }
        }
    }

4 个答案:

答案 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());
}