Skip to content

开启强制路由

系统默认开启强制路由,可以防止恶意访问,提高系统安全性。

公共配置文件位置:config/route.php

alt image

以admin模块举例,配置文件位置:app/admin/config/route.php

<?php

return [
    // 是否强制使用路由
    'url_route_must'        => true,
    // 合并路由规则
    'route_rule_merge'      => true,
    // 路由是否完全匹配
    'route_complete_match'  => true,
    // 是否自动转换URL中的控制器和操作名
    'url_convert'           => false,
];

路由文件目录

以admin模块举例

alt image

添加路由

以admin模块下的Article控制器举例,新增test方法,添加路由,接口访问地址:http://域名/admin/cms/article/test

系统代码生成功能自动添加路由文件,无需手动添加路由。
路由地址可以不跟控制器方法一一对应,可自行调整。

控制器文件位置:admin/controller/cms/Article.php,新增test方法

public function test()
{
    $params = (new ArticleValidate())->post()->checkParam('test');
    $result = ArticleService::test($params);
    if(true === $result) {
        return $this->success([], '修改成功');
    } else {
        return $this->error(ArticleService::getError());
    }
}

路由文件位置:app/admin/route/cms.php,新增test路由

Route::post('cms/article/test', 'cms.Article/test');

使用中间件

用以上举例,路由添加中间件

use app\admin\middleware\LoginMiddleware; // 登录中间件
use app\admin\middleware\AuthMiddleware; // 权限中间件
use app\admin\middleware\OperationLog; // 操作日志中间件

Route::post('cms/article/test', 'cms.Article/test')->middleware([
    LoginMiddleware::class,
    AuthMiddleware::class,
    OperationLog::class
]);

路由分组

用以上举例,新增路由到分组中

路由分组支持嵌套

use app\admin\middleware\LoginMiddleware; // 登录中间件
use app\admin\middleware\AuthMiddleware; // 权限中间件
use app\admin\middleware\OperationLog; // 操作日志中间件

Route::group('cms', function () {
    Route::group('article', function () {
        //文章列表
        Route::get('lists', 'cms.Article/lists');
        //添加文章
        Route::post('add', 'cms.Article/add');
        //编辑文章
        Route::post('edit', 'cms.Article/edit');
        //文章详情
        Route::get('detail', 'cms.Article/detail');
        // test路由
        Route::post('test', 'cms.Article/test');
    });
})->middleware([
    LoginMiddleware::class,
    AuthMiddleware::class,
    OperationLog::class
]);

miss路由

没有匹配到所有的路由规则后执行一条设定的路由,系统默认的miss路由

Route::miss(function () {
    if (app()->request->isOptions()) {
        $header = Config::get('cookie.header');
        $header['Access-Control-Allow-Origin'] = app()->request->header('origin');
        return Response::create('ok')->code(200)->header($header);
    } else
        return Response::create()->code(404);
});

Released under the Apache-2.0 License.