为什么是redirect()-> back();功能不断进入登录页面?

时间:2019-02-05 16:06:40

标签: laravel session authentication redirect laravel-middleware

我正在尝试建立一个多语言的Web应用程序。使用语言环境切换器中间件,我想使用诸如“ locale / ru”之类的Http请求来设置语言环境。然后作为区域设置会话变量集返回到当前页面。 (我还为后端控制面板设置了标准的laravel Auth。) 但是当发出请求时(通过URL或类似的东西),laravel将我重定向到身份验证登录页面,就像我试图到达需要身份验证的页面一样。 如果我尝试将该会话设置Http请求设置为已经登录的用户,则它将我重定向到默认的“您已登录”信息中心页面。

如果我将redirect-> back()替换为redirect-> route('landing');然后它的作品,但我不想为此功能设置一个恒定的页面。 我试图删除Auth :: routes();从Web路由中,我被重定向到正确设置的当前页面区域设置会话变量,但是我失去了laravel身份验证功能。

我的LanguageSwitcher中间件代码:

<?php

namespace App\Http\Middleware;

use Closure;

class SwitchLanguage
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {   
        //Language switcher
        if(\Session::has('locale'))
        {
            \App::setLocale(\Session::get('locale'));
        }
        //Language switcher ending!!

        return $next($request);
    }
}

我的网络路线:

<?php


// Route::get('/', function () {
//     return view('front.anasayfa');
// });

//Language switcher
    Route::get('locale/{locale}', function($locale){
        Session::put('locale',$locale);
        return redirect()->back();
    });

    Route::get('/','AnasayfaController@index')->name('landing');

    Route::get('/haberler','NewsController@index');

    Auth::routes();

    Route::get('/dashboard', 'DashboardController@index');

我想通过url(例如“ locale / etc ....”)选择一种语言,然后重定向到当前页面,而不会干扰laravel auth。

0 个答案:

没有答案