讨论 技术讨论 ModStartBlog如何关闭web端前台?

ModStartBlog如何关闭web端前台?

sigool 发表于    阅读:70    回复:1

问题描述:

ModStartBlog如何关闭web端前台?我只要modstart博客系统的后台管理,不要前台,能去掉吗?

环境信息:

用的是: ModStartBlog 稳定版 v10.0.0       PHP:7.0.9 版本

处理办法:

从代码里可见modstart blog系统,核心就是这个Blog模块,所以它是没办法禁用的,后台也没啥配置能不能关闭前台之类的。

改之前,我们先阅读下源码,看看前台页面,显示博客列表啊,博客标签,博客详情页面啊这些运作流程是怎么样的。

这是modstart的服务提供代码

ModStartWeb::registerModuleRoutes();

这句代码就是执行注册modstart blog系统的Web端路由,比如打开modstart blog的前台页面或者打开后台管理页面,这些都属于Web端请求所以需要提前注册路由。

我们点开这个这个静态方法看看

上面红色正方形框框部分代码应该就是先注册模块Web目录下的路由

现在看到的这个Blog/Web/routes.php,就是modstart blog系统核心模块 blog模块 的路由文件,会被先require执行,所以写里头的注册路由就会被执行了。

接着就是方法结尾红色椭圆框框那条代码,会执行引入的

就是我们app/Web/routes.php这个路由文件。

我们打开blog模块的路由文件看看

可以看到正是注册了这些路由,所以得以我们可以打开访问到我们的博客系统前台。

那如果我不想要前台呢?就是相当于不想用户访问到这些路由?

解决办法一:

要么你先在这个模块路由文件执行前抢先注册这些相关的路由,然后路由响应404就可以了,因为laravel遵循如果多条路由匹配到的话,先执行先注册的,后面的就不鸟了。

具体写在哪里。你可能写在 app/Providers/RouteServiceProvider.php 里可以,因为看 app/Providers/RouteServiceProvider.php 这个服务提供类是写在modstart的之前的,所以它的boot方法肯定也会比modstart的服务提供类先执行。具体就不说了,我用的是第二个办法。


解决办法二:

覆盖blog模块注册的这些路由,响应统一改成也是404,这样就当于这条路由不存在了。

刚好app/Web/routes.php这个文件就执行在module/Blog/Web/routes.php后,所以写里头可以达到覆盖目的。

这个是原本访问前台首页的路由,如果你连前台首页都不需要了直接注释掉即可,像我,我只是留个首页显示一点内容,其它前台要显示的页面我不需要了。

刚才blog模块web路由文件我们可见,里面定义的路由都是跟自己同目录下Controller文件里的控制器有关的。所以我们倒推过来,如果访问都是这些控制器相关的,那就是blog模块web前台功能,所以我们覆盖掉不让它访问,我们巧妙用直接用抛出404这样的响应,这样不就相当于没有定义这些路由了,毕竟laravel没法直接删除已经定义过的路由的。

现在效果,直接404,访问不到前台了。

就留了一个首页



评论

 
1
我来评论
QQ
微信
客服