分类 laravel 下的文章

guards修改

修改config/auth.php,在guards中增加所需内容,例如

'guards' => [
    'admin' => [
        'driver' => 'jwt',
        'provider' => 'admins',
    ],

    'user' => [
        'driver' => 'jwt',
        'provider' => 'users',
        'hash' => false,
    ],
],

增加auth中相应providers

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Models\User::class,
    ],

    'admins' => [
        'driver' => 'eloquent',
        'model' => App\Models\Admin::class,
    ],
],

路由中指定走自己的中间件

// 这种写法含义是走名为admin的guard,并且使用auth.admin中间件
Route::group(['middleware' => 'auth.admin:admin'], function () {
    Route::get('admin/changePassword', [AdminIndexController::class, 'changePassword']);
    Route::get('admin/exams', [AdminExamController::class, 'index']);
});

实现自己的AuthAdmin中间件

class AuthAdmin
{
    public function handle(Request $request, Closure $next)
    {
        if (!auth('admin')->check()) {
            return response()->json([
                'code' => 401,
                'msg'  => '登录信息错误',
            ]);
        }

        if (auth('admin')->user()->token != JWTAuth::getToken()) {
            return response()->json([
                'code' => 401,
                'msg'  => '请重新登录',
            ]);
        }

        $request->user = auth('admin')->user();

        return $next($request);
    }
}

在实际工作中,我们很多项目不是很大,或者只是个小的活动,可能一两月就不用了,这时我们可能并不需要一个 完整的 框架 ,在之前的一篇文章中,我们测试也发现使用全面的框架,运行时会耗费很多时间

所以我们考虑,对于这些小项目并不需要完整的MVC,有个快捷的Model就很好了

刚好laravel的Model是可以单独提出来使用的,方法如下

composer.json

{
    "require": {
        "illuminate/database": "5.1.x"
    }
}

配置文件

return $dbconfig = [

    'driver'    => 'mysql',

    'host'      => '127.0.0.1',

    'database'  => 'test',

    'username'  => '',

    'password'  => '',

    'charset'   => 'utf8',

    'collation' => 'utf8_general_ci',

    'prefix'    => 'wp_',

];

引入

require __DIR__ . "/vendor/autoload.php";
require __DIR__ . '/database.php';

use Illuminate\Database\Capsule\Manager as Capsule;
use Illuminate\Database\Eloquent\Model;

Eloquent

$capsule = new Capsule;
$capsule->addConnection($dbconfig);
$capsule->bootEloquent();
class Posts extends Model
{
    public $timestamps = false;    
    public $primaryKey = "ID";
}

后面就和正常的Laravel模型一样使用即可

参考文献
https://lvwenhan.com/php/409.html
https://d.laravel-china.org/docs/5.1/eloquent

传言说laravel的数据库配置是config中的database.php

实际上不知某种原因,再根目录的env文件也会影响这个配置,需要修改

 

我们可能这样获取路由参数

[pcsh lang="php" tab_size="4" message="" hl_lines="" provider="manual"]

Route::get('yunshi/today/{xingzuo}/name2/{name2}', 'Post\PostController@showDetail');

[/pcsh]

我们在控制器里可以按次序获取

如下所示

[pcsh lang="php" tab_size="4" message="" hl_lines="" provider="manual"]

    public function showDetail($name2,$name){
        var_dump($name2);    
        var_dump($name);
    }

[/pcsh]

当然,控制器里参数的顺序和路由中是一一对应的关系,

所以这里

xingzuo对应$name2

name2对应$name

 

一直用thinkphp,觉得thinkphp也很不错

但是thinkphp毕竟只有咱们中国人用,我想应该多用用外国人的东西,比如laravel,毕竟中国13亿人口产生的程序员用thinkphp,国外有几十亿人口的程序员用laravel,号称第一大,用用应该没有坏处哦 ,人多的话,贡献的代码应该也多

还是要虚心一点

刚一测试,就对他这种用composer安装和创建项目的方式有点不喜欢,不过这貌似是趋势,肯定有他的好处的

创建中间件用命令还是不错的,‘格式’一下就生成了,可以直接写了

目前对他的路由这个地方还是有点不解,不知道为何要这么搞,但是我相信肯定是有他的好处的,可能是为了安全吧