您的位置:首页 > 编程语言 > PHP开发

PHP 框架Laravel Eloquent 实现身份验证

2014-07-30 11:26 776 查看
PHP自从5.3后似乎又热度又回升, 最近了解了一下PHP框架之一Laravel, 最近最新的版本已经是4.3  基本的结构这里不讲, 要了解可以在这里看文档 http://v4.golaravel.com/docs/4.2 , 下面只是记录一下身份验证的实现过程

 

[code]/***********************


*    注册 登录 登出 路由


***********************/


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('/');


});

[/code]

 

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,提交地址,和一些表格元素。

[code]@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

[/code]

 

下面也类似的是login.blade.php页面的内容

[code]@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

[/code]

 

然后提交后,根据路由规则,就来到HomeController控制器的 register() 方法和 login() 方法来处理

[code]<?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');


}


}


 


}

[/code]

 

这三个方法有点复杂,以后在写。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: