Laravel 5.2 带参数的身份验证重定向

Laravel 5.2 Authentication Redirect with Parameters

因为我无法在 SO 中找到任何类似的问题,所以我正在写这篇文章 post 希望这不是重复的...

我有一个使用 KnockoutJs 开发的页面,我正在使用它通过 Laravel 身份验证来保护。基本上,我使用 Laravel 只是为了 login/registration,一旦用户 logs/signs 进入,他就会被重定向到 KnockoutJS 页面。

现在假设我有一个 URL,

http://example.com/mypage#q=some+parameters&p=somethingsomething

如果我与我的一位朋友分享 URL,它显然会将我的朋友重定向到登录页面。现在,登录页面 URL(他被重定向到的地方)是

http://example.com/login#q=some+parameters&p=somethingsomething

但是一旦他登录,他就会被重定向到

http://example.com/mypage#

这显然是不对的,因为我需要参数在那里...

我的路由页面如下,

Route::group(['middleware' => 'web'], function() {
    Route::auth();
    Route::get('/', 'MainController@index')->name('home.index');
});

Route::group(['middleware' => ['web','auth']], function () {
    Route::get('/mypage', 'MyController@index')->name('mypage.index');
});

我的 AuthControllerredirectTo Url set

protected $redirectTo = '/mypage';

我应该做什么更改(在 AuthController 中,或在路由中?或在中间件中)以将用户重定向到

http://example.com/mypage#q=some+parameters&p=somethingsomething

登录后?

您可以使用 Laravel 中的预期方法。

例如:

 public function authenticate()
    {
        if (Auth::attempt(['email' => $email, 'password' => $password])) {
            // Authentication passed...
            return redirect()->intended('dashboard');
        }
    }

这会将用户重定向到预期的 URL 登录页面,或者如果没有预期的 URL,则重定向到仪表板。

https://laravel.com/docs/5.2/authentication#authenticating-users

因为 Laravel 的 Redirect::intended 对我不起作用,我自己发布这个问题的答案...

用户 Jquery/Javscript 像这样在重定向后创建 cookie:

(function(){
    'use strict';

    var intended = window.location.hash;
(intended.length > 0) ? jQuery.cookie('intended', '/app' + intended) : jQuery.cookie('intended', '/app');

})();

并将这些更改变为 Laravel 5.2 的默认值 AuthController

//Replace the default constructor with this
public function __construct(Request $request) {
    if(isset($_COOKIE['intended'])) {
        $this->setRedirect($request);
    }
}

//Copy paste it anywhere in your AuthController Class
protected function setRedirect($request) {
        $intended = (url($_COOKIE['intended']));
        $url['intended'] = $intended;
        $request->session()->put('url', $url);
}

希望这对某人有所帮助....

谢谢,:)