当使用Laravel命中auth过滤器时,如何转发redirect :: route->的参数?

时间:2014-06-17 17:48:42

标签: laravel before-filter laravel-routing

我有以下问题:

创建用户并且用户确认了她的电子邮件后。 我希望用户登录, 我使用以下代码来执行此操作:

重定向::路由(' login-forward') - > with(' alert_message',...) 警报信息只是表明一切顺利,我希望她登录。

login-forward受一个运行实际登录表单的before过滤器保护, 当用户随后登录时,她将被带回登录转发,然后将用户放在她的个人登录页面上。

路由' login-forward的代码是:

Route::get('my-login', array(
    'as' => 'login-forward',
    'before' => 'auth',
    function ()
    {
        $user = Auth::user();
        switch ($user->role) 
        {
            case 'Administrator':
                return Redirect::route('admin_dashboard');

            case 'FreeUser':
                return Redirect::route('cs-dashboard');

            default:
                return Redirect::route('/');
        }}));

问题是,> with(' alert_message',...)在前过滤器调用的真实登录路由中看不到。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

最好的方法是让用户在确认电子邮件时自动登录,如果用户确认帐户创建,那么当您发现该用户有效时,您可以使用以下内容登录该用户:

// $user = Get the user object
Auth::login($user);

您也可以使用:

Session::put('alert_message', ...);
Redirect::route('login-forward');

然后,当用户第一次登录时,只需使用以下内容从Session获取消息:

// Get and show the alert_message
// from session and forget it
@if (Session::has('alert_message'))
    {{ Session::pull('alert_message') }}
@endif

因此,当pull来自Session的消息显示该消息时,Session中的消息将不再可用,或者您可以使用Session::reflash()来消息另一个后续请求的闪烁会话数据,直到您进入要显示该消息的页面。

答案 1 :(得分:0)

最佳选择是 - you can make forward to login form,无需从控制器方法重定向个人网页的网址。

return Route::dispatch(Request::create('login'))->getOriginalContent();