2018年11月06

firekylin二次开发之关闭默认admin后台访问的方式

firekylin不管用什么方式安装,后台都是通过host/admin的方式访问,所以不太安全,修改的方式也有很多,这里简单的介绍一下只修改代码来隐藏一下入口。

准备

再配置一个子域名,内容和默认域名可以基本一致,然后接下来再代码里略微改一下即可。

  • 在前台入口文件判断如果是后台域名访问,直接重定向admin模块。
  • 在后台入口文件判断如果是前台域名访问,直接重定向前台域名访问。

注意,假设几个名称:前台域名:yaimeet.me,后台域名:admin.yaimeet.me。如果后文没有特殊描述,接下来所提到的前台域名后台域名均代表上面的假设!!!


修改前台访问入口

文件在src/home/controller/base.js,修改__before方法,默认开头如下:

if (this.ctx.action === 'install') {
     return;
}
...

修改成如下:

if (this.ctx.host === '后台域名' || this.ctx.hostname === '后台域名') {
    return this.redirect('/admin');
}
if (this.ctx.action === 'install') {
    return;
}
...

修改后台访问入口

文件在src/admin/controller/base.js,修改__before方法,默认开头如下:

const {controller, action} = this.ctx;
if (controller === 'user' && action === 'login') {
    return;
}
...

修改成如下:

const {controller, action, host, hostname} = this.ctx;
if (host === '前台域名' || hostname === '前台域名') {
     return this.redirect('/');
 }
 if (controller === 'user' && action === 'login') {
     return;
 }
...

最终效果

当你访问前台域名/admin时,就自动跳转到首页,当访问后台域名时,自动跳转到后台域名/admin

其实实现的方式有很多,也可以在nginx中做一些配置来实现,我用这个方式最简单而已,哈哈。

注意事项

  • 后台域名的子域名建议不要用常用的admin等,尽量隐晦一些。
  • 逻辑中使用到了host,由于项目实际上是通过nginx做的反向代理,所以如果只是简单的做个proxy_pass转发,实际上获取的host还是转发后的host,而不是用户访问的host

参考链接

本文链接:https://yaimeet.com/post/firekylin-development-close-default-admin.html

-- EOF --

Comments