博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
laravel身份验证-Auth的使用
阅读量:7044 次
发布时间:2019-06-28

本文共 1571 字,大约阅读时间需要 5 分钟。

  hot3.png

 

laravel自带了auth类和User模型来帮助我们很方便的实现用户登陆、判断。

首先,先配置一下相关参数

app/config/auth.php

  • model 指定模型

  • table 指定用户表

    这里我只是将tableusers改成user,因为我个人在数据库命名方面喜欢用单数。
    app/models/User.php:

    protected $table = 'user';

理由同上。

可以看出,很简单甚至不用配置就能使用了,接下来看看如何使用。

以后台为例,每次访问肯定需要先判断用户是否是登陆状态,在其他框架中我们一般习惯在所有控制器的父控制器中判断,也就是在laravel中的app/controllers/BaseController.php类__construct方法中:

layout))        {            $this->layout = View::make($this->layout);        }    }}

代码很容易理解,我们通过 Auth::check() 就可以判断用户是否登陆状态,如果不是的话,直接重定向到 /login 这个url,为什么用Redirect::guest()而不用Redirect::to()呢,通过api手册可以查到:

Redirect::guest() 在重定向时会将当前url保存到session中,这样可以在登陆以后,使用Redirect::intended()方法跳转到之前的页面继续业务。
跳转到/login这个页面,当然得实现写好路由,可以指向某个控制器方法,详细的就不提了,假设login表单提交处理方法大致如下:

public function postLogin(){    if (Auth::attempt(array('email' => $email, 'password' => $password)))    {        return Redirect::intended('/');    }}

Auth::attempt()方法可以用来验证用户提交的登陆信息是否和user表里的匹配,在例子中,password这个字段是固定的,你在user表中也应当有对应的字段,并且宽度至少60,切记不是MD5。而email字段就随便了,可能你是使用username作为唯一标识符的,这个因项目而异吧,这里就随便以 email 作为登陆账户名了,数据库中也有相应的字段。

可能有人会比较难以理解,其实只要换个角度,Auth只是帮我们实现了本来需要自己写的验证逻辑,还记得一开始配置的参数中有model和table,Auth就是根据这个自动帮我们查询,如果匹配成功会自动帮我们写入session,这样下次Auth::check()的时候就通过了。
Redirect::intended('/')这个方法的意思是跳转到之前的页面,如果像上面那样使用了Redirect::guest()方法,那么intended这里就会跳转到那时候的url,而它的参数只是一个默认值,再没有记录历史url的时候会跳转到'/'。

还可以继续优化,比如我们不应当在BaseController中进行Auth::check,我们可以利用Route::filter,在请求之前就进行验证,这方面可以参考手册中Route的相关章节。

Auth还有一些其他的方法,比如 Auth::basic() 可以实现http basic认证,详细的可以参考手册 "身份验证" 章节,以及相关api,本文只是描述下大致的验证流程,不会深究了,毕竟阿婆主自己才接触一点点内容。

转载于:https://my.oschina.net/cxz001/blog/347225

你可能感兴趣的文章
单引号转义时load_file/outfile 生成一句话
查看>>
js的正则处理
查看>>
两日公开课:伯克利深度强化学习训练营 | 视频+PPT
查看>>
通过DockerFile创建ssh服务镜像
查看>>
windows server 2008中关于网络的进阶设定
查看>>
Python 并发编程(一)之线程
查看>>
苹果 vs AMD 高低互现
查看>>
手把手教你用C#打包应用程序(安装程序)
查看>>
软件架构设计模式简述
查看>>
模块化安装与删除openstack的dev(control、compute)与folsom(control)版本
查看>>
ISA系列之ISA Server 2004 中的新增功能--利用多个网络
查看>>
设计Unix下木马程序
查看>>
任务栏出现两个重复图标的解决办法
查看>>
AlphaZero完胜三大世界冠军棋类程序:5000个TPU、自学一天
查看>>
centos 查看每天应用程序的iowait
查看>>
.Net Micro Framework研究—中文显示
查看>>
修改虚拟机MAC地址的方法
查看>>
WINDOWS7更改访问windows共享的用户名和密码
查看>>
Mac下好用的批量文件扩展名修改工具
查看>>
配置gitlab环境实现代码管理及Web Hook测试和ldap认证
查看>>