laravel身份验证-Auth的使用

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

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

  • model 指定模型
  • table 指定用户表
    这里我只是将table从users改成user,因为我个人在数据库命名方面喜欢用单数。
    app/models/User.php:

    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-30 20:24:37

laravel身份验证-Auth的使用的相关文章

为MongoDB添加身份验证

MongoDB 默认没有开户身份验证,除非不开放外网访问,否则这种模式极不安全,现纪录添加身份验证步骤如下: 配置创建用户的时候,需要关闭: #security:##副本集之间通信用到的认证文件# keyFile: /home/soft/mongodb-linux-x86_64-rhel62-3.4.2-shard2/mongo-key# clusterAuthMode: "keyFile"##开启身份验证# authorization: "enabled" 因为你

启动 WLS 时的身份验证错误(解决linux下问题)

故障排除请注意,并非下面所有任务都需要完成.有些问题仅通过执行几项任务就可以解决. 快速链接 为什么发生此问题? 启动身份无效(WLS 7.0 和 WLS 8.1) 内嵌的 LDAP:丢失管理密码(WLS 7.0 和 WLS 8.1) 内嵌的 LDAP:更改管理密码后被管服务器不启动(WLS 7.0 和 WLS 8.1) WebLogic 服务器与 LDAP 服务器连接失败(WLS 7.0 和 WLS 8.1) LDAP 服务器:连接错误(WLS 7.0 和 WLS 8.1) LDAP 服务器:

Linux服务器安全策略配置-PAM身份验证模块(二)

○ 本文导航 关于PAM PAM身份验证配置文件 PAM配置文件语法格式 PAM模块接口 PAM控制标志 PAM配置方法 PAM身份验证安全配置实例 - 强制使用强密码(用户密码安全配置) - 用户SSH登录失败尝试次数超出限制后锁定账户(帐户锁定/解锁和时间设置) - 允许普通用户使用sudo而不是su(限制普通用户登录到root用户) - 禁止直接使用root用户通过SSH登录 pwgen复杂密码随机生成工具 关于PAM Linux-PAM (Pluggable Authentication

Web用户的身份验证及WebApi权限验证流程的设计和实现

前言:Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能,一个功能复杂的业务应用系统,通过角色授权来控制用户访问,本文通过Form认证,Mvc的Controller基类及Action的权限验证来实现Web系统登录,Mvc前端权限校验以及WebApi服务端的访问校验功能. 1. Web Form认证介绍 Web应用的访问方式因为是基于浏览器的Http地址请求,所以需要验证用户身份的合法性.目前常见的方式是Form认证,其处理逻辑描述如下:1. 用户首先要在登录页面输入用户名和密码,然

使用google身份验证器实现动态口令验证

最近有用户反应我们现有的短信+邮件验证,不安全及短信条数限制和邮件收验证码比较慢的问题,希望我们也能做一个类似银行动态口令的验证方式.经过对可行性的分析及慎重考虑,可以实现一个这样的功能.怎么实现呢,是自己开发一个这样的app?这样成本太高了,为了节约成本,我们使用互联网使用比较多的google身份验证器.使用它,我们只需要开发服务端就可以了.google身份验证器的原理是什么呢?客户端和服务器事先协商好一个密钥K,用于一次性密码的生成过程,此密钥不被任何第三方所知道.此外,客户端和服务器各有一

定制Asp.NET 5 MVC内建身份验证机制 - 基于自建SQL Server用户/角色数据表的表单身份验证

背景 在需要进行表单认证的Asp.NET 5 MVC项目被创建后,往往需要根据项目的实际需求做一系列的工作对MVC 5内建的身份验证机制(Asp.NET Identity)进行扩展和定制: Asp.NET内建的身份验证机制会使用Local DB(本地数据库)读写用户相关的信息,而在数据库驱动的项目中,管理业务信息的数据库通常是特定的数据库环境,比如远程SQL Server数据库实例或Access数据库等等,业务数据库中保存着一系列针对业务需求的数据表,因此需要定制MVC 5内建身份验证,使其操作

(实用篇)php通过会话控制实现身份验证实例

会话控制的思想就是指能够在网站中根据一个会话跟踪用户.这里整理了详细的代码,有需要的小伙伴可以参考下. 概述 http 协议是无状态的,对于每个请求,服务端无法区分用户.PHP 会话控制就是给了用户一把钥匙(一个加密session字符串),同时这也是用户身份的一个证明,服务端存放了这把钥匙能打开的箱子(数据库,内存数据库或者使用文件做的),箱子里面装的就是用户的各个变量信息. 传统的php session 使用 <?php //page1.php 启动一个会话并注册一个变量 session_st

WebApi 登录身份验证

前言:Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能,一个功能复杂的业务应用系统,通过角色授权来控制用户访问,本文通过Form认证,Mvc的Controller基类及Action的权限验证来实现Web系统登录,Mvc前端权限校验以及WebApi服务端的访问校验功能. 1. Web Form认证介绍 Web应用的访问方式因为是基于浏览器的Http地址请求,所以需要验证用户身份的合法性.目前常见的方式是Form认证,其处理逻辑描述如下:1. 用户首先要在登录页面输入用户名和密码,然

Web API 身份验证 不记名令牌验证 Bearer Token Authentication

1. Startup.Auth.cs文件 添加属性 public static OAuthBearerAuthenticationOptions OAuthBearerOptions { get; private set; } 添加静态构造函数 /// <summary> /// 构造函数 /// </summary> static Startup() { OAuthBearerOptions = new OAuthBearerAuthenticationOptions(); }