Laravel Auth验证

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,本文只是描述下大致的验证流程,不会深究了,毕竟阿婆主自己才接触一点点内容。

时间: 2024-10-29 15:56:25

Laravel Auth验证的相关文章

laravel身份验证-Auth的使用

laravel自带了auth类和User模型来帮助我们很方便的实现用户登陆.判断. 首先,先配置一下相关参数app/config/auth.php: model 指定模型 table 指定用户表这里我只是将table从users改成user,因为我个人在数据库命名方面喜欢用单数.app/models/User.php: protected $table = 'user'; 理由同上. 可以看出,很简单甚至不用配置就能使用了,接下来看看如何使用. 以后台为例,每次访问肯定需要先判断用户是否是登陆状

laravel 框架 验证器 与 auth登录验证

php artisan make:request logincheck 验证器  创建 : 原文地址:https://www.cnblogs.com/kangqiwei/p/10905887.html

Auth验证用户验证

laravel自带了auth类和User模型来帮助我们很方便的实现用户登陆.判断. 首先,先配置一下相关参数app/config/auth.php: model 指定模型 table 指定用户表这里我只是将table从users改成user,因为我个人在数据库命名方面喜欢用单数.app/models/User.php: protected $table = 'user'; 理由同上. 可以看出,很简单甚至不用配置就能使用了,接下来看看如何使用. 以后台为例,每次访问肯定需要先判断用户是否是登陆状

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

用laravel 写登录验证 本来是用Crypt加密 添加用户到数据库的 后来验证密码  解密时一直报错 The payload is invaild 由于本人是laravel框架小白 自己思考许久未果  于是乎就百度搜索 想不到国内laravel框架的信息 如此之少 什么也没有找到 接着又用谷歌搜索  laravel The payload is invaild  在一些英文论坛上找到一些资料 可是对我帮助不大 问题还是没解决 想想还有哈希加密 于是就转用hash加密添加用户 可是到了登录验证

[PHP] 浅谈 Laravel auth:api 不同驱动 token 和 passport 的区别

token 驱动使用 TokenGuard 用传递的值去用户表中查询 member_token 字段的值,看是否有匹配的.服务端需要在用户表中存储 access_token. passport 驱动是 laravel/passport 组件包提供的,通过 Bearer Token Validator 对传递的值进行 JWT 验证,看是否解析出的值能匹配到数据库中的 auth_access_token_id.服务端不需要存储 access_token,相对安全. 另外,laravel/passpo

需要auth验证的post请求(python)

#!/usr/bin/python3.5 # import sys, requests try:     host = sys.argv[1] except IndexError:     sys.exit('Usage: {0} host'.format(sys.argv[0]))      user = 'root' passwd = '123' url = 'http://{0}/xcache/cacher/'.format(host) headers = {'User-Agent':'M

laravel登录验证

在表单中的地址为: {{ route('login') }} 该路由就会在该文件夹中的Router.php中 然后去对应的文件中进行验证 D:\phpStudy\WWW\goushihui\app\Http\Middleware\RedirectIfAuthenticated.php 原文地址:https://www.cnblogs.com/ryanLee1/p/8656799.html

laravel 控制器验证

路由文件 web.php Route::any('/post/create', '[email protected]'); 代码文件 PostController.php <?php namespace App\Http\Controllers; use Illuminate\Http\Request;use App\Http\Controllers\Controller;use Illuminate\Support\Facades\DB;use Illuminate\Support\Facad

如何在Laravel中加密大文件?

Empcat的成功软件包应采用Laravel设计.用户可以上传任何大小的文件.出于安全原因,必须静态加密这些文件. Laravel提供加密,但是它们主要用于加密值.它使用加密的帮助程序方法很好地加密了小文件,例如图像,但是在此过程中,必须将文件的内容加载到内存中,这对于大文件是个问题. 我寻找了解决此问题的软件包或解决方案?找到了此Stack Overflow的答案?此PHP解决方案,它基本上是Stack Overflow中描述的解决方案的PHP. 我决定为Laravel创建一个扩展包,该扩展包