首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为不同类型的用户提供一个登录页,并在Laravel中重定向到他们预定的仪表板

为不同类型的用户提供一个登录页,并在Laravel中重定向到他们预定的仪表板
EN

Stack Overflow用户
提问于 2017-11-21 14:44:35
回答 2查看 1.6K关注 0票数 0

我一直在计划为不同类型的用户创建一个登录页面,它将能够将他们引导到他们的仪表板/主页。这是我的两个用户:

  1. 旅行者
  2. 代理

旅行者可以成功登录,并将被定向到预期的主页,但代理不会被定向到其预期的主页,而是它将被导向回登录页面。

这是我的登录控制器代码

代码语言:javascript
复制
<?php

namespace App\Http\Controllers\Auth;

use Auth;
use App\Travelers;
use App\Agents;
use App\Users;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;

class LoginController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles authenticating users for the application and
    | redirecting them to your home screen. The controller uses a trait
    | to conveniently provide its functionality to your applications.
    |
    */

    use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }

    public function login(Request $request){
            if(Auth::attempt([
                'email' => $request->email,
                'password' => $request->password
            ])){   
                $user = Users::where('email', $request->email)->first();

                switch ($user->userType){
                    case 'traveler':
                        return redirect()->route('Traveler/HomePage');
                        break;
                    case 'travel agent':
                        return redirect()->route('Agent/HomePage');
                        break;
                }
            }
            else{
                return redirect()->route('login');
            }
    }

}
EN

回答 2

Stack Overflow用户

发布于 2017-11-21 15:22:24

我认为您需要在LoginController中重新定义方法LoginController,例如:

代码语言:javascript
复制
public function redirectPath() 
{  
    if (Auth::user()->role == 'admin'){
        return '/admin';
    }

    return '/';
}
票数 2
EN

Stack Overflow用户

发布于 2017-11-23 08:01:13

假设您将user_type列添加到user表和1 - users / 2 - admin

LoginController.php

代码语言:javascript
复制
//protected $redirectTo = '/dashboard';

protected function redirectTo()
{
    if(Auth::user()->user_type=='2'){
       return '/dashboard';
    }else{
       return '/game';
    }
}

所有的admins都重定向到dashboard,其他users重定向到game。我使用的是laravel默认的auth系统。

注意,protected $redirectTo = '/dashboard';更改为

代码语言:javascript
复制
protected function redirectTo()
{
    return '/path';
}

参考资料:https://laravel.com/docs/5.5/authentication#authentication-quickstart

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47415856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档