在Laravel注册后如何部分登录用户

时间:2019-04-11 09:09:42

标签: laravel login routes

填写表格后,我希望用户首先被重定向到内容成功注册的页面。现在的问题是它会自动重定向到用户mypage

用户模型

public function register($data){
try {
    $this->name = $data['name'];
    $this->email = $data['email'];
    $this->password = $data['password'];
    $this->save();
    return $this;
} catch (\Exception $e) {
    \Log::error(get_class().':register(): '.$e->getMessage());
    return false;
}
}

Auth \ RegisterController

public function registComplete(User $user){
    $data = Session::get('user');
    $data['password'] = Hash::make($data['password']);
    $rtn = $user->register($data);

    Auth::guard('user')->login($rtn);

    return redirect('/regist/complete');
}

在我的/regist/complete路线中,它指向将显示感谢页面的函数。从那里,用户可以单击要重定向到用户mypage的按钮,这将是他们唯一可以重定向的时间。

查看

<div class="regist_cont">
        <div class="rgstdn_message">
            <p class="redbig_message">Thanks for registering.</p>
            <p>You can now visit your profile</p>

        </div>
        <a class="btn btn_red" href="{{ url('/mypage') }}">MY PAGE</a>
    </div>

如果我删除Auth::guard('user')->login($rtn);,则该用户不会自动登录。但是,当单击“我的页面”按钮时,我无法使他们登录。我该如何实现?

2 个答案:

答案 0 :(得分:1)

您可以在控制器上添加以下行

protected $redirectTo = '/regist/complete';

这将覆盖默认重定向到您的页面

答案 1 :(得分:0)

探索之后,我可以使用Session来做到这一点。

Auth \ RegisterController

public function registComplete(User $user){
    $data = Session::get('user');
    $data['password'] = Hash::make($data['password']);
    $rtn = $user->register($data);

    Session::put('log', $rtn);
    Session::save();

    return redirect('/regist/complete');
}

public function registSuccess(){
    Auth::guard('user')->login(Session::get('log'));

    return view('user.register.registComplete');
}

由于我也在使用社交媒体登录,因此在重定向到Mypage时,我会在UserController中进行此操作。

public function index()
{
    if(Session::exists('log')){
        Session::forget('log');
    }

    return view('user.dashboard')->with([
        'user' => Auth::user(),
    ]);
}

就此而言,我能够实现自己想要实现的目标。如果您还有其他更好的方法,我也愿意接受。