【问题标题】:Redirects an authenticated user back to the originally requested URL or the default URL in laravel将经过身份验证的用户重定向回最初请求的 URL 或 laravel 中的默认 URL
【发布时间】:2015-04-28 04:12:29
【问题描述】:

我是laravel的新手,我想实现以下结果,假设客人在搜索一个词后进入结果页面然后决定登录,我怎样才能让用户登录并保持相同的结果laravel 中的页面 我有以下代码 在 filters.php 我有以下内容:

Route::filter('guest', function()
 {
    if (Auth::check()) return Redirect::to('/');
});

然后在用户控制器中我有以下内容

显示登录功能

public function login()
{
    return View::make('users.login');
}

句柄登录功能 公共函数句柄登录() { $data = Input::only(['email', 'password']);

    if(Auth::attempt(['email' => $data['email'], 'password' => $data['password']])){
        return Redirect::to('/profile');            
    }
    return Redirect::route('login')->withInput();

}

现在登录后的默认页面转到个人资料页面,但我希望用户回到登录前的任何位置。

有什么帮助吗?谢谢

【问题讨论】:

    标签: laravel-4


    【解决方案1】:

    在 Laravel 4 中,您可以使用 Redirect::guestRedirect::intended 轻松实现您的目标。

    Redirect::guest 将当前 URL 放入会话中,然后重定向到目标 URL。

    Redirect::intended 检查会话中是否保存了任何 URL,如果不存在则重定向到该 URL 或默认位置。

    实际上,您的代码可以是:

    if(Auth::attempt(['email' => $data['email'], 'password' => $data['password']])){
        return Redirect::guest('/profile');            
    }
    

    登录后

    if (Auth::check()) return Redirect::intended(); 
    

    【讨论】:

      【解决方案2】:

      我想这就是你要找的东西

      return Redirect::back();
      

      【讨论】:

      • 感谢您的回答,确实它会返回结果页面的 url,但是如果执行搜索,我会收到无法识别查询的错误
      • 如果您的搜索使用的是 POST 方法,那么它将无法识别查询,因为它没有保存。也许您可以使用 GET 方法进行搜索?
      猜你喜欢
      • 2013-06-28
      • 1970-01-01
      • 2019-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-24
      • 2021-01-15
      • 1970-01-01
      相关资源
      最近更新 更多