• 后盾网lavarel视频项目---lavarel中间件(使用中间件拦截没登录的用户)


    后盾网lavarel视频项目---lavarel中间件(使用中间件拦截没登录的用户)

    一、总结

    一句话总结:

    1、中间件中验证用户是否登录:if(!Auth::guard('admin')->check()){
    2、注册中间件(在kernel的路由中间件中注册):protected $routeMiddleware = ['admin.auth'=>AdminMiddleware::class,
    3、控制器中使用中间件(控制器的构造方法中):$this->middleware('admin.auth')->except(['login','loginCheck']);

    1、中间件中的逻辑怎么写?

    逻辑就是用户没登录跳转到哪里:和tp中的一样,这里是用的auth判断用户是否登录
    public function handle($request, Closure $next)
    {
      if(!Auth::guard('admin')->check()){
          return redirect('/admin/login');
      }
      return $next($request);
    }

    2、中间件在哪里注册?

    在kernel(app/Http/Kernel.php)的路由中间件(protected $routeMiddleware)中注册
        protected $routeMiddleware = [
            'admin.auth'=>AdminMiddleware::class,
            'auth' => AppHttpMiddlewareAuthenticate::class,
            'auth.basic' => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class,
            'bindings' => IlluminateRoutingMiddlewareSubstituteBindings::class,
            'cache.headers' => IlluminateHttpMiddlewareSetCacheHeaders::class,
            'can' => IlluminateAuthMiddlewareAuthorize::class,
            'guest' => AppHttpMiddlewareRedirectIfAuthenticated::class,
            'signed' => IlluminateRoutingMiddlewareValidateSignature::class,
            'throttle' => IlluminateRoutingMiddlewareThrottleRequests::class,
            'verified' => IlluminateAuthMiddlewareEnsureEmailIsVerified::class,
        ];

    3、中间件在哪里使用?

    控制器的构造方法中:public function __construct()
    public function __construct()
    {
      //排除'login'和'loginCheck'方法,进行中间件的验证
      $this->middleware('admin.auth')->except(['login','loginCheck']);
    }

    二、lavarel中间件(使用中间件拦截没登录的用户)

    1、创建中间件

    D:softwarecodingphpphpstudyPHPTutorialWWWlegend3legend3>php artisan make:middleware AdminMiddleware
    Middleware created successfully.

    app/Http/Middleware/AdminMiddleware.php 创建成功

     

    2、中间件中验证用户是否登录

     1 <?php
     2 
     3 namespace AppHttpMiddleware;
     4 
     5 use Closure;
     6 use Auth;
     7 
     8 class AdminMiddleware
     9 {
    10 
    11     public function handle($request, Closure $next)
    12     {
    13         if(!Auth::guard('admin')->check()){
    14             return redirect('/admin/login');
    15         }
    16         return $next($request);
    17     }
    18 }

    第6行和第13行,用的是auth用户认证

    13-15逻辑:如果没登录,就跳转了后台登录页面

    3、注册中间件(在kernel的路由中间件中注册)

    kernel路径:app/Http/Kernel.php

    也就是把这个中间件插在路由这个拦截节点上

        protected $routeMiddleware = [
            'admin.auth'=>AdminMiddleware::class,
            'auth' => AppHttpMiddlewareAuthenticate::class,
            'auth.basic' => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class,
            'bindings' => IlluminateRoutingMiddlewareSubstituteBindings::class,
            'cache.headers' => IlluminateHttpMiddlewareSetCacheHeaders::class,
            'can' => IlluminateAuthMiddlewareAuthorize::class,
            'guest' => AppHttpMiddlewareRedirectIfAuthenticated::class,
            'signed' => IlluminateRoutingMiddlewareValidateSignature::class,
            'throttle' => IlluminateRoutingMiddlewareThrottleRequests::class,
            'verified' => IlluminateAuthMiddlewareEnsureEmailIsVerified::class,
        ];

    'admin.auth'表示是这个中间件的表示符,也就是名字

    4、控制器中使用中间件

    控制器路径:app/Http/Controllers/Admin/EntryController.php

    class EntryController extends Controller
    {
        public function __construct()
        {
            //排除'login'和'loginCheck'方法,进行中间件的验证
            $this->middleware('admin.auth')->except(['login','loginCheck']);
        }

    在构造方法中使用,可以保证执行在每个方法之前

    需要排除掉login和loginCheck方法,因为这两个方法是显示登录界面和进行登录判断的方法

     
  • 相关阅读:
    js获取input file文件二进制码
    nginx新手入门
    代码神器Atom,最常用的几大插件,你值得拥有。
    css3 3d 与案例分析
    express搭建简易web的服务器
    hosts文件管理和nginx总结
    css3 3D
    问题大神
    面试题整理
    版本控制简介,git使用----使用GitHub托管代码
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/11504391.html
Copyright © 2020-2023  润新知