Laravel Auth验证

时间:2022-05-27 02:56:36

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

首先,先配置一下相关参数 app/config/auth.php

  • model 指定模型

  • table 指定用户表

    protected $table = 'user';

理由同上。

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

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

<?php

class BaseController extends Controller {

    public function __construct()
{
if(Auth::check() == false){
return Redirect::guest('login');
}
}
/**
* Setup the layout used by the controller.
*
* @return void
*/
protected function setupLayout()
{
if ( ! is_null($this->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,本文只是描述下大致的验证流程,不会深究了,毕竟阿婆主自己才接触一点点内容。

Laravel Auth验证的更多相关文章

  1. laravel 数据验证

    laravel 数据验证 在保存数据之前进行数据验证 类需要继承 Controller 然后用  $this->validate( $request , ['title' => 'requ ...

  2. laravel 自定义验证 Validator&colon;&colon;extend

    laravel 自定义验证 $messages = [ 'name.integer' => '名字不能为整型', 'name.max' => '长度不能超过5', ]; public st ...

  3. Laravel 用户验证Auth&colon;&colon;attempt fail的问题

    1.在laravel项目中,当使用Auth::attempt()用于用户验证时,Auth::attempt()会把密码通过Hash进行转换,变成一串不知啥的长字符,如果你在数据库里事先设置了明文的密码 ...

  4. laravel身份验证-Auth的使用

    laravel自带了auth类和User模型来帮助我们很方便的实现用户登陆.判断.首先,先配置一下相关参数 app/config/auth.php: model 指定模型table 指定用户表这里我只 ...

  5. Laravel登录验证碰到的坑 哈希验证匹配问题

    用laravel 写登录验证 本来是用Crypt加密 添加用户到数据库的 后来验证密码  解密时一直报错 The payload is invaild 由于本人是laravel框架小白 自己思考许久未 ...

  6. 如何 Laravel 中验证 zip 压缩包里的文件?

    在 Laravel 程序中上传文件时,请求验证可以很好验证上传的文件.你可以要求上传文件必须为 图片 , 也可以限制文件字节 大小 , 也可以根据 mime types 或者 文件扩展名 过滤文件. ...

  7. laravel 更新验证

    public function update(Request $request, User $user) { // 验证规则. $rules = [ 'email' => [ 'nullable ...

  8. laravel自定义验证

    1.在控制器中直接写验证$this->validate($request, [ 'video_ids' => [ function($attribute, $value, $fail) { ...

  9. laravel Auth token创建于使用

    token 的创建和使用, https://laravelacademy.org/post/3640.html 用户表密码字段验证修改,不只是password https://www.jianshu. ...

随机推荐

  1. 免信用卡注册美国App Store账号

    对于一些应用国内的App Store无法下载让人很郁闷,而自己又有点轻微的强迫症.于是开始尝试免信用卡注册iCloud账号. Apple的官方网站上的教程,见http://support.apple. ...

  2. Python正则匹配递归获得给出目录下的特定类型的文件小技巧

    需求是酱的: 输入一个目录,这个目录包含检测目录的必备信息但不准确需要获得后加工一下,如给出目录:C:\Program Files\Common Files\DESIGNER,需要检测的目录是:C:\ ...

  3. Eclipse项目导入Android Stuio 配置出现 Timeout waiting to lock buildscript class cache for build file &&num;39&semi;H&colon;&bsol;studioproject&bsol;Generic&lowbar;SN&bsol;build&period;gradle&&num;39&semi;

     Eclipse项目导入Android Stuio 配置出现 Error:Timeout waiting to lock buildscript class cache for build file  ...

  4. linux之SQL语句简明教程---外部连接

    之前我们看到的左连接 (left join),又称内部连接 (inner join).在这个情况下,要两个表格内都有同样的值,那一笔资料才会被选出.那如果我们想要列出一个表格中每一笔的资料,无论它的值 ...

  5. 对于行高&lpar;line-height&rpar;的一些理解

    刚一开始学习这个特性的时候,总是出一些当时看起来很奇怪的问题.现在决定重新整理一下.毕竟使用css,十行揉在一起凑出效果是一种使用,知道为什么会有这种效果也是一种使用.我们需要做一些测试,所以首先需要 ...

  6. ssm框架的搭建实现CRUD的操作

    最近在开发公司的一个系统,系统的框架是用ssm的框架搭建的,当然和这次写博客的不一样,它拥有很多的配置文件,企业级的开发所需要的配置文件是非常繁琐的,今天记录一下一个简单的SSM框架的搭建和实现一个C ...

  7. 简介 - SAFe(Scaled Agile Framework,规模化敏捷框架)

    简介 SAFe(Scaled Agile Framework,规模化敏捷框架) SAFe:https://www.scaledagileframework.com/ Scaled Agile Fram ...

  8. python Exception中的raise、assert

    使用raise抛出异常 当程序出现错误,python会自动引发异常,也可以通过raise显式地引发异常.一旦执行了raise语句,raise后面的语句将不能执行. 演示raise用法. try: s ...

  9. C&num; NPOI生成Excel文档(简单样式)

    效果图: 代码:  /// <summary> /// 导出Excel /// </summary> /// <param name="DeptId" ...

  10. Bean Validation技术实现对Javabean的校验

    概述:在java开发时,由于分层的原因(表现层-控制层-业务层-数据持久层),有时候需要对传入的Javabean进行校验,如果过多的校验会导致比较繁琐,做重复的工作,下面将介绍Bean Validat ...