资讯专栏INFORMATION COLUMN

laravel5.1 -- 获取用户的登录状态,事件、监听、中间件的简单应用

nicercode / 3529人阅读

摘要:现在我们通过一个用户登录来讲解一个事件,监听一个事件并触发一些操作的全过程。首先,在中注册事件与监听器之间的映射关系。在中,我们把用户状态分为,,根据登录用户的不同状态来显示出不同的内容。

事件存在很多方面,比如登录、购买商品、搜索、查看文章等等。 监听器监听到事件发生后,会执行一些操作。Laravel使用观察者模式来实现这种监听机制。 现在我们通过一个用户登录来讲解一个事件,监听一个事件并触发一些操作的全过程。

Registering Events / Listeners

首先,在App/Providers/EventServiceProvider.php中注册事件与监听器之间的映射关系。下面的三个映射关系中我们只用到了LoginEventLoginSuccess

protected $listen = [
    "AppEventsLoginEvent" => ["AppListenersLoginSuccess"],
    "AppEventsLogoutEvent" => ["AppListenersLogoutSuccess"],
    "AppEventsUserAccess" => ["AppListenersUserAccess"]
];

然后,在根目录下执行artisan

$ php artisan event:generate

执行命令成功后,分别会在App/EventsAppListeners下生成App/Events/LoginEventApp/Listeners/LoginSuccessphp文件

定义事件类

LoginEvent事件中什么都没有改动,也不需要改动

定义监听器

现在在App/Listeners中有了一个LoginSuccess.php监听器,为了以后方面,我们在App/Listeners中新建一个基础的监听类ListenerBase.php

statut = new Statut;
    }
}
?>

ListenerBase.php中实例化了一个Statut类,这个Statut类在App/Services文件夹下,下面我们会用到。


现在来到App/Listeners/LoginSuccess.php

statut->setLoginStatut($event);
    }
}

LoginSuccess继承了ListenerBase, handle方法中$this->statut->setLoginStatut获取了登录用户的状态

Statut.php

App/Services中新建php文件Statut.php,再此文件中,主要定义了获取当前登录用户的状态的几个方法,当触发事件后,会执行Statut.php文件中的操作

put("statut", auth()->user()->role->slug);//auth()->user()在用户登录完成后才会有值
    }

    /**
    * Set visitor statut
    *
    * @return void
    */
    public function setVisitorStatut(){
        session()->put("statut", "visitor");
    }

    /**
    * Set the statut
    *
    * @return void
    */
    public function setStatut(){
        if(!session()->has("statut")){
            session()->put("statut", auth()->check() ? auth()->user()->role->slug : "visitor");
        }
    }
}
?>

好了,事件和监听器完成之后,就需要触发操作了,这里我们用中间件(Middleware)

Defining Middleware

使用artisan命令来创建中间件 App/Http/Middleware/App.php

$ php artisan make:middleware App

执行成功后,使用全局方法event


最后,再将App中间件注册到kernel.php中


完成上面的操作后,就可以获取用户的登录状态了。在Statut.php中,我们把用户状态分为visitoradmin,user,根据登录用户的不同状态来显示出不同的内容。例如,如果是admin,则他可以进入后台并执行一些操作,如果是user或者visitor,那么他只能浏览一些页面


总结:

了解自己想要做什么,达到什么样的目的,操作的过程中,思路应清晰。


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22578.html

相关文章

  • laravel5.1 -- 获取用户登录状态事件监听间件简单应用

    摘要:现在我们通过一个用户登录来讲解一个事件,监听一个事件并触发一些操作的全过程。首先,在中注册事件与监听器之间的映射关系。在中,我们把用户状态分为,,根据登录用户的不同状态来显示出不同的内容。 事件存在很多方面,比如登录、购买商品、搜索、查看文章等等。 监听器监听到事件发生后,会执行一些操作。Laravel使用观察者模式来实现这种监听机制。 现在我们通过一个用户登录来讲解一个事件,监听一个...

    gityuan 评论0 收藏0
  • Laravel5.1 实现第三方登录认证(包括微博、QQ、微信、豆瓣)

    摘要:目前支持的认证有。英文不好的同学比如我,下面是中文文档通过扩展的,实现了很多第三方认证。国内的有微博微信豆瓣。至于和的具体值,这个是由新浪微博分发给你的,在新浪微博的授权回调页中填写。 前言 第三方登录认证能简化用户登录/注册的操作,降低用户登录/注册的门槛,对提高应用的用户转化率很有帮助。 Socialite Laravel 为我们提供了简单、易用的方式,使用 Laravel Soc...

    nifhlheimr 评论0 收藏0
  • 关于laravel5.1安装心得

    摘要:完全没有基础的人基本上很难安装并使用成功。目录用于存放的依赖包。开启访问即可看到有的字样出现,代表安装配置成功。 最近开始开坑,玩php,而且laravel最近很热门,所以就这样了。小白php直接接触框架真的不容易,以前python接触的django框架看官网文档觉得写得勉强吧,不是太好看,直到看到laravel的文档才知道什么叫变态。完全没有基础的人基本上很难安装并使用成功。而且即使...

    vibiu 评论0 收藏0
  • React专题:react,redux以及react-redux常见一些面试题

    摘要:我们可以为元素添加属性然后在回调函数中接受该元素在树中的句柄,该值会作为回调函数的第一个参数返回。使用最常见的用法就是传入一个对象。单向数据流,比较有序,有便于管理,它随着视图库的开发而被概念化。 面试中问框架,经常会问到一些原理性的东西,明明一直在用,也知道怎么用, 但面试时却答不上来,也是挺尴尬的,就干脆把react相关的问题查了下资料,再按自己的理解整理了下这些答案。 reac...

    darcrand 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<