您的位置:首页 > 编程语言 > PHP开发

Laravel 使用Auth登录验证

2018-04-13 16:47 459 查看
原文地址:http://changziming.com/post-167.html

关于Auth类的简单介绍和使用参见文档:http://v4.golaravel.com/docs/4.0/security跟着文档走,我们先需要对配置项进行修改:" app/config/auth.php " 

这里定义了一个驱动器,一个进行验证的类User,这个类位于应用目录app/models下,同样的定义了一个用户表,这里要改成自己项目中的对应的表。再往下看,Laravel中使用了Hash类来创建密码,具体用法如下:

接下来我们创建一个登录的路由,路由分为GET和POST请求两个。

我们去创建User控制器,并且完善loginGet和loginPost方法。

验证登录方法:

接下来我这边就是各种错误。根据错误提示一条条修改。发现在User类中,需要实现验证接口。

然后要去重写接口中定义过的方法:

调试的过程中,发现中文文档给出的只言片语还是不足以去解决问题的,无奈打开Laravel的源码,开始一点一点理解。

laravel的主框架代码文件在vendor\laravel\framework\src\Illuminate目录下。关于Atuh模块在对应的Auth目录下。我们使用的Auth类其实也就是Guard.php文件中的类。

这是验证用户名和密码并登录的方法,看出来需要array $credentials = array()这个条件参数,$remember是否记住登录。如果$remember=true后,会在cookie中保存用户的一些信息。当用户的session清除之后,程序会继续尝试从cookie中的一些加密信息中把用户“恢复”出来。一般来说,使用默认值false就行了,不然还需要其他地方的一些调整。这里的提供者$this->provider经验证是在Auth目录下的EloquentUserProvider.php文件中。EloquentUserProvider类实现了接口UserProviderInterface,重写了接口中的方法,这个类主要是负责验证用户,定义一些token,和根据条件恢复用户。
只有$this->provider->validateCredentials($user, $credentials) 验证用户名和密码成功之后,才会调用$this->login($user, $remember)进行关于用户的session控制。

这是登录的方法,先是获取用户表的主键ID,$id。
这里将有关信息放入session.

如果$remember为true就会执行这个代码块:

看到这里会有关于cookie的相关操作,会将登录用户信息放入cookie中,方便“恢复”。如果在登录后有监听的事件,会在这里执行:

一切就绪,设置user,设置之后便可以在以后的流程中使用Auth类验证是否登录了。

退出登录的方法:


Auth的check( )方法:




这里是user就是刚刚登录成功后设置的user。通过user()获取user信息的方法:


如果用户登录时$rember为true,退出登录时候出错,SESSION信息清除,COOKIE信息保留了。再进行验证就会出错,原因在与:


这里会尝试根据cookie中的信息进行“恢复”用户。我是执行这样,先清除本机的cookie信息,之后再尝试登录操作。

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: