Laravel logoutOtherDevices功能:登录后将其重定向到上一个采用的网址,而不是首页网址

时间:2019-01-14 12:33:09

标签: laravel authentication laravel-5.7

在我的应用程序中,如果在一台计算机上登录,则需要在其他计算机上注销。 我正在使用Invalidating Sessions On Other Devices

实现该功能。 工作正常但是问题是,在多个设备上交替登录后,它不是加载主URL,而是上一个加载的页面。

public function authenticated(Request $request, $user)
{      

    $data = $request->all();
    if (Spark::usesTwoFactorAuth() && $user->uses_two_factor_auth) {
        return $this->redirectForTwoFactorAuth($request, $user);
    }

    Auth::logoutOtherDevices($request->password);
    return redirect()->intended($this->redirectPath());
} 

包含在我的LoginCOntroller中

1 个答案:

答案 0 :(得分:1)

intended()就是这样做的。如果您检查来源,

/**
 * Create a new redirect response to the previously intended location.
 *
 * @param  string  $default
 * @param  int     $status
 * @param  array   $headers
 * @param  bool    $secure
 * @return \Illuminate\Http\RedirectResponse
 */
public function intended($default = '/', $status = 302, $headers = [], $secure = null)
{
    $path = $this->session->pull('url.intended', $default);

    return $this->to($path, $status, $headers, $secure);
}

...您将看到它将尝试从会话中提取预期的URL。如果您不满意,可以将其删除。

public function authenticated(Request $request, $user)
{      

    $data = $request->all();
    if (Spark::usesTwoFactorAuth() && $user->uses_two_factor_auth) {
        return $this->redirectForTwoFactorAuth($request, $user);
    }

    Auth::logoutOtherDevices($request->password);
    return redirect($this->redirectPath());
} 

您还需要确保LoginController中有一个指向首页的$redirectTo属性。

/**
 * Where to redirect users after login.
 *
 * @var string
 */
protected $redirectTo = '/';