一些使用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(可用)