PHP 框架Laravel Eloquent 實現身份驗證

PHP自從5.3後彷佛又熱度又回升, 最近了解了一下PHP框架之一Laravel, 最近最新的版本已是4.3  基本的結構這裏不講, 要了解能夠在這裏看文檔 http://v4.golaravel.com/docs/4.2 , 下面只是記錄一下身份驗證的實現過程php

 

/***********************
 *    註冊 登陸 登出 路由
 ***********************/
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,而後跳轉到網站根目錄laravel

 

下面是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頁面的內容 app

@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');
    }
}
 
}

 

這三個方法有點複雜,之後在寫。 post

相關文章
相關標籤/搜索