【问题标题】:Laravel. How to pass an argument to the redirectTo() function in Laravel拉拉维尔。如何将参数传递给 Laravel 中的 redirectTo() 函数
【发布时间】:2020-06-19 19:43:11
【问题描述】:

我正在构建一个包含 2 个登录名的页面。所以每个登录都有自己的刀片文件。重定向发生在 LoginController.php 我将 protected $redirectTo = '/page1'; 替换为

function redirectTo(){
        if(true){
            return '/page1';
        } else {
            return '/page2';
        }
    }

它有效,这意味着它不会引发错误。但是我怎样才能将参数传递给这个函数,以及这个函数在哪个地方/文件被调用?

【问题讨论】:

  • 这能回答你的问题吗? Laravel 5.4 redirection to custom url after login
  • 没有。因为重定向应该取决于用户使用的登录方式(1 或 2),而不是用户拥有的角色。 -> 1 个用户。 2 次登录。 2个重定向。所以想法是在提交表单中将一些值传递给这个函数,但我无法弄清楚,如何以及在哪里。

标签: laravel


【解决方案1】:

在两个表单中创建一个隐藏的输入字段

form1:

<input type="hidden" name="page" value="page1">

form2:

<input type="hidden" name="page" value="page2">

现在在LoginController

 use \Illuminate\Http\Request; // add this line

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


         if (Auth::attempt(['email' => request('email'), 'password' => request('password'), 'verified' => 1])) {
            // Authentication passed...

            if($request->input("page") == "page1") {
               return redirect()->intended('page1');
             } else {
               return redirect()->intended('page2');
             }

        }

        }

【讨论】:

  • 我不想使用角色,因为如果 user1 使用 login1 -> page1 如果 user1 使用 login2 -> page2。所以重定向选项必须imo在刀片文件中?或其他地方,但我不知道如何实现它:-(
  • @dualpeter 我已经更新了我的答案。请立即查看
  • 太棒了!!!它开箱即用。我不敢相信。非常感谢。 (✿◠‿◠)。
【解决方案2】:

LoginController.php 中创建一个名为authenticated() 的函数,然后根据需要创建自己的实现。

例子:

protected function authenticated(Request $request, $user)
{
  if ($user->role == 'Administrator') {
     return redirect('/admin-page');
  } else if($user->role == 'Guest') {
     return redirect('/guest-page');
  }
  abort(401);
}

【讨论】:

    猜你喜欢
    • 2021-06-10
    • 1970-01-01
    • 2018-05-11
    • 2018-12-21
    • 2019-05-26
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多