一些使用laravel時用到的一些小技巧
一·添加自定義函數##
建立文件夾,放在app目錄下,比如:
然後再 conposer.json文件中的自動加載項加入你添加的自定義文件:
"autoload": {
"classmap": [
"database"
],
"files":[
"app/Helpers/Helpers.php"
],
"psr-4": {
"App\\": "app/"
}
},
然後運行:
composer dump-autoload
二·開發項目必備
1.ide-hlper
composer require --dev barryvdh/laravel-ide-helper
然後在
app/Providers/AppServiceProvider.php file, 添加
public function register()
{
if ($this->app->environment() !== 'production') {
$this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class);
}
// ...
}
2.laravel-debugbar
1). 使用 Composer 安裝該擴展包:
composer require barryvdh/laravel-debugbar
2). 安裝完成後,修改 config/app.php 在 providers 數組內追加 Debugbar 的 Provider
'providers' => [
...
Barryvdh\Debugbar\ServiceProvider::class,
],
同時在 aliases 數組內追加如下內容
'aliases' => [
...
'Debugbar' => Barryvdh\Debugbar\Facade::class,
]
3). 接下來運行以下命令生成此擴展包的配置文件 config/debugbar.php:
php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"
打開 config/debugbar.php
,將 enabled 的值設置爲:
'enabled' => env('APP_DEBUG', false),
修改完以後, Debugbar 分析器的啓動狀態將由 .env文件中 APP_DEBUG 值決定。
二 加密解密函數
laravel 當中提供了兩種加密解密方式
encrypt和decrypt
你可以使用輔助函數 encrypt 來加密一個值。所有加密值都使用 OpenSSL 與 AES-256-CBC 來進行加密。此外,所有加密過的值都會使用消息認證碼(MAC)進行簽名,以檢測加密字符串是否被篡改過:
<?php
namespace App\Http\Controllers;
use App\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class UserController extends Controller
{
/**
* 存儲用戶保密信息
*
* @param Request $request
* @param int $id
* @return Response
*/
public function storeSecret(Request $request, $id)
{
$user = User::findOrFail($id);
$user->fill([
'secret' => encrypt($request->secret)
])->save();
}
}
無序列化加密
加密值在加密期間通過 serialize 傳遞,這允許對象和數組的加密。因此,接收加密值的非PHP客戶端將需要 unserialize 數據。如果想在不序列化的情況下加密和解密值,可以使用 Crypt Facade 的 encryptString 和 decryptString 方法:
use Illuminate\Support\Facades\Crypt;
$encrypted = Crypt::encryptString('Hello world.');
$decrypted = Crypt::decryptString($encrypted);
解密一個值
你可以使用輔助函數 decrypt 來解密一個值。如果該值不能被正確解密,例如當 MAC 無效時,會拋出異常 Illuminate\Contracts\Encryption\DecryptException:
use Illuminate\Contracts\Encryption\DecryptException;
try {
$decrypted = decrypt($encryptedValue);
} catch (DecryptException $e) {
//
}
哈希
Laravel Hash Facade 提供安全的 Bcrypt 哈希保存用戶密碼。 如果應用程序中使用了 Laravel 內置的 LoginController
和 RegisterController
類,它們將自動使用 Bcrypt 進行註冊和身份驗證
如果用到了laravel auth認證模塊,默認是採用這種加密方式
基本用法
你可以通過調用 Hash Facade 的 make 方法來填寫密碼:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use App\Http\Controllers\Controller;
class UpdatePasswordController extends Controller
{
/**
* 更新用戶密碼
*
* @param Request $request
* @return Response
*/
public function update(Request $request)
{
// Validate the new password length...
$request->user()->fill([
'password' => Hash::make($request->newPassword)
])->save();
}
}
make 方法還能使用 rounds 選項來管理 bcrypt 哈希算法的加密係數。然而,大多數應用程序還是能接受默認值的:
$hashed = Hash::make('password', [
'rounds' => 12
]);
根據哈希值驗證密碼
check 方法可以驗證給定的純文本字符串對應於給定的散列。 如果使用 Laravel 內置的 LoginController,則不需要直接使用該方法,因爲該控制器會自動調用此方法:
if (Hash::check('plain-text', $hashedPassword)) {
// 密碼對比...
}
檢查密碼是否需要重新加密#
needsRehash
函數允許你檢查已加密的密碼所使用的加密係數是否被修改:
if (Hash::needsRehash($hashed)) {
$hashed = Hash::make('plain-text');
}
PHPSTORM最新註冊碼
http://www.0-php.com:1017 --2018/3/12(可用)