Laravel 5.2多表身份验证和中间件一起无法正常工作

阿维吉特·巴塔查吉

我正在使用laravel 5.2多表(user,admin)身份验证功能,以使用两个表,一个用于用户,另一个用于管理员。除中间件功能外,其他所有功能均正常运行。默认的'auth'(Authenticate.php)不起作用,我制作了一个自定义的'auth.super_admin'(SuperAdminMiddleware.php)来检查用户是否admin和结果是否相同。这是我的auth.php文件

'defaults' => [
        'guard' => 'web',
        'passwords' => 'users',
    ],
    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],
        'admins' => [
            'driver'   => 'session',
            'provider' => 'admins'
        ]
    ],

这是Authenicate中间件和SuperAdminMiddleware方法:

Authenticate.php
public function handle($request, Closure $next, $guard = null)
    {
         if (Auth::guard($guard)->guest()) {
            if ($request->ajax() || $request->wantsJson()) {
                return response('Unauthorized.', 401);
            } else {
                return redirect()->guest('login');
            }
        }

        return $next($request);
    }

SuperAdminMiddleware.php
public function handle($request, Closure $next)
    {

        if(\Auth::guard('admins')->check())
        {
            return $next($request);
        }
        return redirect('/');
    }

因此,当我在控制器的构造函数中使用“ auth”时,它将无法正常工作,并会调用相应的方法。我在做什么或想念什么错?

阿维吉特·巴塔查吉

其实我已经解决了这个问题。这是解决方案

Authenticate.php


public function handle($request, Closure $next, $guard = null)
    {
    /*
    |--------------------------------------------------------------------------
    | Authenticate Middleware
    |--------------------------------------------------------------------------
    |
    | This middleware is for checking whether user is from user table .
    | and authenticated.
    |
    */
        if (!Auth::user()) {
            return redirect('/');
        }else
        {
            return $next($request);

        }
    }

SuperAdminMiddleware.php

/*
    |--------------------------------------------------------------------------
    | Authenticate Middleware(Super Admin check)
    |--------------------------------------------------------------------------
    |
    | This middleware is for checking whether user is from admin table 
    | and super_admin .
    |
    */
    public function handle($request, Closure $next)
    {


        if (\Auth::guard('admins')->user()) {
            if(\Auth::guard('admins')->user()->type == 'super_admin')
                return $next($request);

            return redirect('/');
        }
        return redirect('/');
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Laravel 5.2多表身份验证和中间件一起无法正常工作

来自分类Dev

如何修改laravel中间件以与Firebase身份验证一起使用

来自分类Dev

Laravel 5-身份验证无法正常工作之前

来自分类Dev

Laravel 5-身份验证无法正常工作之前

来自分类Dev

Laravel 5身份验证中间件始终重定向到root或登录

来自分类Dev

Laravel 5身份验证如何工作?

来自分类Dev

Laravel5:中间件还是验证?

来自分类Dev

Laravel 5中的中间件如何工作?

来自分类Dev

Laravel 5.2的多重身份验证使用中间件

来自分类Dev

Laravel 5.4 中的附加身份验证中间件

来自分类Dev

用于Laravel 5的动态中间件

来自分类Dev

Laravel 中的中间件无法正常工作

来自分类Dev

Laravel 5多表唯一验证

来自分类Dev

Laravel 5身份验证器

来自分类Dev

AngularJS + Laravel 5身份验证

来自分类Dev

laravel 5的CKFinder身份验证问题

来自分类Dev

主页上的Laravel 5身份验证

来自分类Dev

Laravel 5注册身份验证

来自分类Dev

Laravel 5身份验证器

来自分类Dev

Laravel 5管理面板身份验证

来自分类Dev

laravel 5的CKFinder身份验证问题

来自分类Dev

laravel 5:路由身份验证错误

来自分类Dev

Laravel 5身份验证错误

来自分类Dev

Laravel 5身份验证问题

来自分类Dev

创建身份验证laravel 5

来自分类Dev

Laravel身份验证在laravel 5.3中无法正常工作

来自分类Dev

laravel的lucadegasperi oauth2服务器被身份验证中间件捕获时该怎么办?

来自分类Dev

在Laravel 5的中间件中获取URL ID

来自分类Dev

在Laravel 5中间件中操作JSON