tp5隐藏后台

浏览:8977 发布日期:2017/04/19 分类:ThinkPHP5专区
开发时后台模块以admin命名,到了上线的时候又想隐藏后台,提高安全性。
我总结的方案如下:

1. 线上站点nginx/apache直接拒绝后台访问,取而代之的是你可以另外单独设一个站点,本地hosts指定一个假域名,这样只有自己能访问后台了。
2.隐藏后台访问路径。

这里主要针对第2点来讨论下怎么隐藏后台路径。

首先想到的是设置路由别名,在下看了一下,路由别名必须精确到控制器名称,而不能给整个模块设置别名,该方案先放弃。

最终我采用了这个方案:单独入口文件绑定admin模块。

1. 创建 public/admin.php , 绑定模块
2. 再route.php中定义路由,拦截 /admin 访问
3. 由于我的服务器配置不支持 /admin.php/index/index 这种pathinfo格式访问,所以需要改成兼容模式url,即 /admin.php?s=/index/index,但是框架并没有提供开关,导致生成的url不是兼容模式,可以通过 Url::root() 方法设定url根路径。
4. 有的地方使用了get表单,需要添加 name="s" 隐藏表单,值是 request()->path()


admin.php代码:<?php
// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');

// 加载框架引导文件
require __DIR__ . '/../thinkphp/base.php';

//绑定到admin模块
\think\Route::bind('admin');

//设置根url,生成兼容模式url
\think\Url::root(\think\Request::instance()->baseFile().'?s=');

// 执行应用
\think\App::run()->send();
route.php代码:<?php
use think\Route;

Route::rule('admin',function(){
    return '404 Not Found';
});
admin.php可以修改成别人猜不到的名字
最佳答案
评论( 相关
后面还有条评论,点击查看>>