PHP 框架Laravel Eloquent 实现身份验证
PHP自从5.3后似乎又热度又回升, 最近了解了一下PHP框架之一Laravel, 最近最新的版本已经是4.3 基本的结构这里不讲, 要了解可以在这里看文档 http://v4.golaravel.com/docs/4.2 , 下面只是记录一下身份验证的实现过程
/***********************
* 注册 登录 登出 路由
***********************/
Route::get('home/login', function(){
return View::make('home.login');
});
Route::post('home/login', 'HomeController@login');
Route::get('home/register', function(){
return View::make('home.register');
});
Route::post('home/register', 'HomeController@register');
Route::get('home/logout', function(){
Auth::logout();
return Redirect::intended('/');
});
Laravel提供了一个MVC的机制,使用Eloquent ORM来处理数据库操作, 这里路由定义了HomeController控制器类里面的两个Action方法,一个是home/login, 一个是home/register, 分别处理来自 login.blade.php 和 register.blade.php里页面里的提交的数据。 离开动作home/logout没有使用控制器的动作, 而是直接用Auth类的方法Auth::logout,然后跳转到网站根目录
下面是register.blade.php页面的内容, 我们看到比较简单,使用了Blade模板,就是一个Form,提交地址,和一些表格元素。
@extends('home.master')
<h1>注册页面</h1>
@section('content')
{{ Form::macro('br', function(){
return '<br/>';
})
}}
{{ Form::open(array('action' => 'HomeController@register', 'method'=>'post')) }}
{{
Form::label('name','姓名')." ".Form::text('name').Form::br().
Form::label('email','邮箱')." ".Form::text('email').Form::br().
Form::label('password','密码')." ".Form::password('password').Form::br().
Form::label('confirm_pass','确认密码')." ".Form::password('confirm_pass').Form::br().
Form::br().Form::submit('确定')
}}
{{ Form::close() }}
@endsection
下面也类似的是login.blade.php页面的内容
@extends('home.master')
<h1>登录页面</h1>
@section('content')
{{ Form::macro('br', function(){
return '<br/>';
})
}}
{{ Form::open(array('action' => 'HomeController@login', 'method'=>'post')) }}
{{
Form::label('email','邮箱')." ".Form::text('email').Form::br().
Form::label('password','密码')." ".Form::password('password').
Form::submit('登录')
}}
{{ Form::close() }}
@endsection
然后提交后,根据路由规则,就来到HomeController控制器的 register() 方法和 login() 方法来处理
<?php
class HomeController extends BaseController {
public function index()
{
$page = Input::get('page',1);
$perPage = 5;
$offset = ($page*$perPage)-$perPage;
$all= User::all()->toArray();
$vars['users'] = User::skip($offset)->take($perPage)->get();
$vars['paginate'] = Paginator::make($all, count($all) , $perPage);
return View::make('home.index', $vars);
}
public function register()
{
$user = new User();
$user->fill( Input::all());
$user->password = Hash::make($user->password);
$user = User::create($user->toArray());
if($user->id)
{
if(Auth::loginUsingId($user->id))
{
echo "Login success";
}
return Redirect::intended('/');
}
}
public function login()
{
$email = Input::get('email');
$password = Input::get('password');
if (Auth::attempt(array('email' => $email, 'password' => $password)))
{
return Redirect::intended('/');
}
else
{
return 'Login failed!'.Link_to('home/login');
}
}
}
这三个方法有点复杂,以后在写。
PHP 框架Laravel Eloquent 实现身份验证的更多相关文章
- PHP框架 Laravel Eloquent ORM 批量插入数据 && 批量更新目前没有
foreach ($products as $v=>$a) { $count[] = array('product_name' => $a['name'], 'product_weight ...
- Shiro安全框架入门篇(登录验证实例详解与源码)
转载自http://blog.csdn.net/u013142781 一.Shiro框架简单介绍 Apache Shiro是Java的一个安全框架,旨在简化身份验证和授权.Shiro在JavaSE和J ...
- (八)play之yabe项目【身份验证】
(八)play之yabe项目[身份验证] 博客分类: 框架@play framework 添加身份验证 play提供了一个模块-Secure(安全模块),用来做身份验证 允许Secure模块 修改 ...
- ASP.NET Core 身份验证(一)
前言 这篇文章我想带领大家了解一下 ASP.NET Core 中如何进行的身份验证,在开始之前强烈建议还没看过我写的 Identity 系列文章的同学先看一下. Identity 入门系列文章: Id ...
- 如何基于asp.net core的Identity框架在mysql上作身份验证处理
首先了解这个概念,我一开始也是理解和掌握基本的概念,再去做程序的开发.Identity框架是微软自己提供,基于.net core平台,可拓展.轻量 级.面向多个数据库的身份验证框架.IdentityS ...
- webapi框架搭建-安全机制(二)-身份验证
webapi框架搭建系列博客 身份验证(authentication)的责任是识别出http请求者的身份,除此之外尽量不要管其它的事.webapi的authentication我用authentica ...
- ASP.NET Core身份验证服务框架IdentityServer4-整体介绍
一.整体情况 现代应用程序看起来更像这个: 最常见的相互作用: 浏览器与Web应用程序的通信 Browser -> Web App Web应用程序与Web API通信 基于浏览器的应用程序与We ...
- Laravel Eloquent使用小记
原文地址:http://blog.onlywan.cc/14843810761202.html Laravel Eloquent使用小记 今天由于开发数据库业务中间层须要.開始研究Laravel El ...
- IdentityServer4 使用OpenID Connect添加用户身份验证
使用IdentityServer4 实现OpenID Connect服务端,添加用户身份验证.客户端调用,实现授权. IdentityServer4 目前已更新至1.0 版,在之前的文章中有所介绍.I ...
随机推荐
- java折半插入排序
代码如下: public class BinaryInsertSort { public static void binaryInsertSort(DataWrap [] data) { System ...
- Django——4 模板标签 模板的继承与引用
Django 模板标签 常用标签 模板的继承与引用 模板标签 标签在渲染的过程中提供任意的逻辑 标签语法: 由%}和 {% 来定义的,例如:{%tag%} {%endtag%} 这个定义是刻意模糊的. ...
- 【Codeforces 158A】Next Round
[链接] 我是链接,点我呀:) [题意] 让你找到排名的前k名,并列的话,如果分数大于0那么就算晋级 问你最后有多少人可以晋级. [题解] 按照题意模拟就好, 先按照a[max] = a[k]的规则找 ...
- 【郑轻邀请赛 I】这里是天堂!
[题目链接]:https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=2135 [题意] [题解] 答案应该为C(n,a)∗C(m,b)/C(n+m,a+b) ...
- 【LeetCode Weekly Contest 26 Q3】Friend Circles
[题目链接]:https://leetcode.com/contest/leetcode-weekly-contest-26/problems/friend-circles/ [题意] 告诉你任意两个 ...
- bupt summer training for 16 #1 ——简单题目
D.What a Mess 给n个数,求其中能满足 a[i] % a[j] == 0 的数对之和 n = 1W,max_ai = 100W 不是很大,所以就直接筛就可以了 计算可得最高复杂度 < ...
- 洛谷 P1851 好朋友
题目背景 小可可和所有其他同学的手腕上都戴有一个射频识别序列号码牌,这样老师就可以方便的计算出他们的人数.很多同学都有一个“好朋友” .如果 A 的序列号的约数之和恰好等于B 的序列号,那么 A的好朋 ...
- Java和JS MD5加密-附盐值加密demo
JAVA和JS的MD5加密 经过测试:字母和数据好使,中文不好使. 源码如下: ** * 类MD5Util.java的实现描述: * */public class MD5Util { // 获得MD5 ...
- A java code
With the help of LiJun I got a piece of JAVA code. With this code, I can do below things like connec ...
- [自己动手改wordpress.1]wordpress的插件User-Access-Manager在新的php版本号里面无法执行的bug.
近期同事在玩wp, 就顺带一起看了下. 她说插件有个不能用. 是一个叫User Access Manager 的插件 详细表现就是在后台填好相应的roles角色的时候, 点提交就会跳到一个错误的页面 ...