Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在创建多重身份验证(admins+;boss)时如何使用Blade指令?_Php_Laravel_Laravel Blade - Fatal编程技术网

Php 在创建多重身份验证(admins+;boss)时如何使用Blade指令?

Php 在创建多重身份验证(admins+;boss)时如何使用Blade指令?,php,laravel,laravel-blade,Php,Laravel,Laravel Blade,我回顾了关于multiauth(不使用is_admin)的所有教程,其中包含不同授权级别的不同表。我有两个授权实体:boss和admin(Manager和admin) 但是,与所有这些教程不同: 我没有单独的授权页面。授权窗口位于主页面上,当您单击授权图标时出现(使用JS,仅显示:block) 所有这些教程都有针对不同角色的单独授权页面(分别针对经理和管理员)。我有一个授权窗口,所以我需要在一个窗口上对用户进行身份验证(同时针对两个角色:管理员和经理) 在任何教程中都没有使用blade指令(我已

我回顾了关于multiauth(不使用is_admin)的所有教程,其中包含不同授权级别的不同表。我有两个授权实体:boss和admin(Manager和admin)

但是,与所有这些教程不同:

  • 我没有单独的授权页面。授权窗口位于主页面上,当您单击授权图标时出现(使用JS,仅显示:block)
  • 所有这些教程都有针对不同角色的单独授权页面(分别针对经理和管理员)。我有一个授权窗口,所以我需要在一个窗口上对用户进行身份验证(同时针对两个角色:管理员和经理)
  • 在任何教程中都没有使用blade指令(我已经浏览了各种教程)。主页上直接包含我拥有的每个内容的唯一性(我没有单独的管理面板和个人帐户管理器)。在这种情况下我该怎么办?编写自定义指令?拉威尔有现成的东西吗
  • 很抱歉问了这么多问题,我没地方可找,网上真的什么都没有了(也许我找不到)

    我能找到的最有用的东西(当然包括youtube视频教程):

    • -->我使用此方法进行了自己的身份验证

    不同的用户角色不需要单独的登录页面。你需要一个。 如果您有这样的用户表

    id type   name   email ...
    1  admin  Plamen Penchev
    2  boss   Ivan   Ivanov
    
    Route::group(['prefix' => 'admin, 'middleware'  => 'check.admin'], function() {
        Route::get('/', 'AdminController@index)->name('admin.index');
    })
    
    用户成功登录后,您将使用此用户类型加载不同的内容,具体取决于用户角色 让我们从我的一个项目中寻找一个例子

    @if (Auth::user())
       <ul class="login-register profile-details">
           <li>
               <a href="{{route('user.profile')}}">
                 <img src="{{asset(Auth::user()->image)}}" />{{Auth::user()->name}}
                </a>
           </li>
            <li class="user_points">
                <p>{{Auth::user()->points}} Points</p>
           </li>
        @if (Auth::user()->type === 'admin)
            <li> <a href="#">ADmin Panel</a></li>
        @endif // you can check the same way for boss 
        </ul>
        @else
        <ul class="login-register">
             <li><a class="popup-text" href="{{route('auth.login')}}" data-effect="mfp-move-from-top"><i class="fa fa-sign-in"></i>Sign in</a>
             </li>
             <li><a class="popup-text" href="{{route('auth.register')}}" data-effect="mfp-move-from-top"><i class="fa fa-edit"></i>Sign up</a>
             </li>
            </ul>
        @endif
    
    
    步骤2:在中间件中键入如下代码

    php artisan make:middleware CheckAdmin
    
    public function handle($request, Closure $next)
        {
            if (Auth::user() &&  Auth::user()->type ===  'admin') {
                return $next($request);
         }
    
        return redirect('/');
        }
    
    'check.admin' => \App\Http\Middleware\CheckAdmin::class,
    
    步骤3注册中间件 打开
    app/Kernel.php
    并找到
    受保护的$routeMiddleware
    数组 并声明您的中间件

    php artisan make:middleware CheckAdmin
    
    public function handle($request, Closure $next)
        {
            if (Auth::user() &&  Auth::user()->type ===  'admin') {
                return $next($request);
         }
    
        return redirect('/');
        }
    
    'check.admin' => \App\Http\Middleware\CheckAdmin::class,
    
    现在,您可以像这样将中间件连接到路由

    id type   name   email ...
    1  admin  Plamen Penchev
    2  boss   Ivan   Ivanov
    
    Route::group(['prefix' => 'admin, 'middleware'  => 'check.admin'], function() {
        Route::get('/', 'AdminController@index)->name('admin.index');
    })
    
    您可以为每个用户角色创建不同的中间件

    关于身份验证 您只需要一个登录表单,使用请求助手验证它,然后将用户登录到其帐户,并根据用户角色限制页面、内容和所有内容


    此外,您还可以阅读更多有关刀片指令的信息。LAravel文档非常清晰易懂

    感谢您的经验和示例。这对我来说是一个很好的飞跃。至于文档,是的,它写得很好,但它不能解决我的问题。我每天都读它,学到一些新的东西,但我不会继续--->我在网站中的所有表格不幸的是,我没有角色。我有完全不同的表格(主管(这是老板)和管理员)。你能告诉我在这种情况下该怎么办吗?假设我是主管,只想看到我手下的项目,对吗?有点错误,这里有一个单独的页面显示这个(主管的项目)。然而,我有一个主页,我需要连接三个角色。管理员显示自己的徽标,主管显示自己的徽标。主管有权补充说项目管理员没有这种能力。我可以用Figma(可以在Photoshop中翻译)。至少粗略估计一下我如何做到这一点。当然,我可以付你一点咨询费,但我是一个来自俄罗斯的穷学生,所以说实话,我口袋里的钱不超过10美元。如果你有skype,加上我,用同一张照片搜索我的名字,我们可以讨论,但目前我在工作,2小时后可以聊天