Laravel:以不同方式重定向不同的用户角色

时间:2016-08-24 17:38:56

标签: php laravel redirect laravel-5

是否可以将具有不同用户角色的用户重定向到laravel 5.1中的其他页面?

我已经查看了Auth中间件和Auth控制器,但没有发现处理登录请求本身的任何内容。

我在Laravel redirect back to original destination after login找到了有关登录重定向的内容,但我不确定在何处放置建议的代码段。

有人可以帮助我吗

1 个答案:

答案 0 :(得分:5)

您可以使用RedirectIfAuthenticated Middleware

进行更新
namespace App\Http\Middleware;

use Closure;
use Illuminate\Contracts\Auth\Guard;

class RedirectIfAuthenticated
{
    /**
     * The Guard implementation.
     *
     * @var Guard
     */
    protected $auth;

    /**
     * Create a new filter instance.
     *
     * @param  Guard  $auth
     * @return void
     */
    public function __construct(Guard $auth)
    {
        $this->auth = $auth;
    }

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if ($this->auth->check()) {

            $auth = Auth::user()->roles()->first();

            switch ($auth->role) {
                case 'admin':
                        return  redirect()->route('admin');    
                    break;
                case 'superadmin':
                        return  redirect()->route('superadmin'); 
                    break;
                case 'user':
                        return  redirect()->route('user');  
                    break;

                default:
                    # code...
                    return  redirect()->route('user');  
                    break;
            }   

         }

        return $next($request);
    }
}