当前位置: 首页 > 知识库问答 >
问题:

登录laravel 5.1后重定向用户

孙阳旭
2023-03-14

我正在尝试实现一个功能,在登录后,用户会根据其角色重定向到URL。我已经设置了角色部分,但是在登录后立即测试用户的属性时遇到了问题。

我按照这里的说明创建了一个用户登录页面。我有一个看起来像这样的AuthController

namespace App\Http\Controllers\Auth;

use App\User;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;

class AuthController extends Controller {

    use AuthenticatesAndRegistersUsers, ThrottlesLogins;
    protected $redirectTo = '/test';
    ...
}

我的\uu construct()函数验证用户,但我不知道如何在登录后立即访问用户对象。这就是我目前拥有的:

 public function __construct() {
     $this->middleware('guest', ['except' => 'getLogout']);

     if ( \Auth::check() ) {
         $user = \Auth::user();
         if ( $user->admin() ) {
         // an admin
             $this->redirectTo = '/admin';
         } else {
         // it's a client
             $this->redirectTo = '/client/dashboard';

         }
     }

     $user = \Auth::user();
     if ( is_object($user) ) {
     } else {
         $this->redirectTo = '/auth-not-object';
     }
 }

当我第一次尝试使用管理员帐户登录时,我会进入路径/auth not object,因为此时没有任何经过身份验证的用户对象。

在尝试登录后,但是得到了一个糟糕的重定向,当我重新访问/logurl时,我被重定向到/home,我相信这是这个类使用的特性中的默认$reDirectTo。这意味着我们已经传递了AuthController__construct()方法,而没有更改$reDirectTo,即使有一个经过身份验证的用户。

我还发现了其他问题,比如如何在Laravel 5.2中的登录条件上添加额外的逻辑,以及如何在登录后将Laravel重定向到url,但我不知道如何应用这些答案。例如,第二个问题的公认答案显示了新方法,getCredentials()login(),它们在poster的原始类中不存在。我不确定在我的代码库中添加它们的类是什么,或者从哪里调用它们。

其他类似的答案显示了一种完全不同的用户身份验证方法,例如。似乎,要使用该解决方案,我需要重新编写代码,并放弃使用traits,其中包括登录限制等额外功能。

是否有一种方法可以在登录后根据角色重定向用户,同时仍然使用这些内置特性?

共有1个答案

江志业
2023-03-14

我不确定5.1身份验证是否与5.2身份验证相同,但如果相同,请从构造中删除所有这些,并添加以下方法:

    protected function handleUserWasAuthenticated( Request $request, $throttles, $guard )
    {
        if ($throttles) {
            $this->clearLoginAttempts( $request );
        }
        if ( method_exists( $this, 'authenticated' ) ) {
            return $this->authenticated( $request, Auth::guard( $guard )->user() );
        }
        return redirect()->intended( $this->redirectTo );
    }

这是确定重定向的方法,您可以访问用户对象

编辑

我收回上面的内容,只需将以下内容添加到您的控制器中;

protected function authenticated( $request, $user ) {
    return redirect()->intended( $user->admin() ? '/admin' : '/client/dashboard' );
}

那应该很好用

 类似资料:
  • 我想在登录到我的索引页面(index.jsp)后进行重定向,实际上我的登录可以正常工作,但ajax支持缺少重定向。 她是我的登录名。jsp 这是我的登录 我的struts配置文件: 对于DAO部分是: 公共字符串验证(字符串用户名,字符串userpass)抛出SQLException,Exception{ 谢谢你的帮助。

  • 记录器文件中的日志- org.springframework.Security.Access.event.loggerlistener-安全授权失败,原因是:org.springframework.Security.Access.accessdeniedexception:访问被拒绝;通过身份验证的主体:org.springframework.security.authentication.ano

  • Reducer.js 我想在成功登录后重定向/主页。我如何重定向?

  • 我使用设计与Rails为我的用户登录。这一切都很好,但是,我无法得到一个特定的重定向工作。 我是rails新手,所以我做事的方法可能不正确。 本质上,通过一个例子,我允许用户喜欢一个帖子。然而,他们需要登录才能这样做。我在我的控制器中创建了一个名为“喜欢”的动作,控制器具有设计过滤器 此时将显示登录页面。一旦用户登录,我想将他们重定向回他们喜欢的帖子,并调用“like”操作。 我的控制器看起来像

  • 问题内容: 我正在做一个简单的论坛,由一系列论坛组成,每个论坛分别代表首页,主题,postitit,登录名和用户列表页面。在某些页面上,当用户未登录时会出现一个链接。 我想要实现的是在登录后触发重定向(在RequestDispatcher上使用forward()),以便浏览器返回到用户在单击登录链接之前所在的页面。为此,我看到了两种解决方案。 第一种解决方案是使用带有登录按钮的HTML 和一个不可

  • 每个人登录后,我一直无法使用Laravel重定向。连接工作,在我登录后,它重定向到一个空白页面,但如果我更改url路径,我可以访问不同的网页。我们将不胜感激!我正在使用LDAP进行连接,它正在工作。 请让我知道,如果有任何其他代码,我应该提供。 非常感谢。 (重定向IfAuthenticated.php) 命名空间应用程序\ Http\中间件; 使用闭包;使用Illumb\Support\Faca