企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] ## 完整代码 >注:注释的部分,可根据实际情况进行去掉! ``` <?php namespace app\agent\controller; use think\Controller; class PublicController extends Controller { /** * 后台登陆界面 */ public function login() { // $loginAllowed = session("__LOGIN_BY_CMF_ADMIN_PW__"); // if (empty($loginAllowed)) { // $this->error('非法登录!', cmf_get_root() . '/'); // } $agent_id = session('AGENT_ID'); if (!empty($agent_id)) {//已经登录 redirect(url("agent/Index/index")); } else { // $site_admin_url_password = config("cmf_SITE_ADMIN_URL_PASSWORD"); // $upw = session("__CMF_UPW__"); // if (!empty($site_admin_url_password) && $upw != $site_admin_url_password) { // redirect(ROOT_PATH . "/"); // } else { // session("__SP_ADMIN_LOGIN_PAGE_SHOWED_SUCCESS__", true); // $result = hook_one('admin_login'); // if (!empty($result)) { // return $result; // } return $this->fetch(":login"); // } } } } ``` ## `session`说明 | session名字 | 作用 | | --- | --- | | `__LOGIN_BY_CMF_ADMIN_PW__` | 设置后台登录加密码,如果设置后值为1 | | `AGENT_ID` | 登录ID | | `cmf_SITE_ADMIN_URL_PASSWORD` | 这个不清楚 | | `__CMF_UPW__` | 这个不清楚 | | `__SP_ADMIN_LOGIN_PAGE_SHOWED_SUCCESS__` | 这个不清楚 | ## 解析 ### 简单登录 >本身登录应该是简简单单的 ``` <?php namespace app\agent\controller; use think\Controller; class PublicController extends Controller { /** * 后台登陆界面 */ public function login() { $agent_id = session('AGENT_ID'); if (!empty($agent_id)) {//已经登录 redirect(url("agent/Index/index")); } else { return $this->fetch(); } } } ``` ### 验证登录 >但是为了更安全一些,后台设置了 `后台加密码` ``` <?php namespace app\agent\controller; use think\Controller; class PublicController extends Controller { /** * 后台登陆界面 */ public function login() { $loginAllowed = session("__LOGIN_BY_CMF_ADMIN_PW__"); if (empty($loginAllowed)) { $this->error('非法登录!', cmf_get_root() . '/'); } $admin_id = session('AGENT_ID'); if (!empty($admin_id)) {//已经登录 redirect(url("agent/Index/index")); } else { return $this->fetch(); } } } ``` ### 后台加密码前端相关 #### 后台加密码代码 ``` <div class="form-group"> <label for="input-admin_url_password" class="col-sm-2 control-label">后台加密码</label> <div class="col-md-6 col-sm-10"> <input type="text" class="form-control" id="input-admin_url_password" name="admin_settings[admin_password]" value="{$admin_settings.admin_password|default=''}" id="js-site-admin-url-password"> <p class="help-block">英文字母数字,不能为纯数字</p> <if condition="!empty($admin_settings.admin_password)"> <p class="help-block" style="color: red;">设置加密码后必须通过以下地址访问后台,请劳记此地址,为了安全,您也可以定期更换此加密码!</p> <php> $site_admin_url_password =config("SP_SITE_ADMIN_URL_PASSWORD"); $root=cmf_get_root(); $root=empty($root)?'':'/'.$root; $site_domain = cmf_get_domain().$root; </php> <p class="help-block">后台登录地址:<span id="js-site-admin-url">{:$site_domain}/{$admin_settings.admin_password}</span></p> </if> </div> </div> ``` #### 后台加密码图片 ![mark](http://qiniu.newthink.cc/blog/20171024-105807310.png) 非法登录 ![mark](http://qiniu.newthink.cc/blog/20171024-121551192.png) #### 后台加密码路由 点击保存后,会在 `data/route.php` 生成一个路由设置 ``` <?php return array ( 'test$' => 'admin/Index/index', ); ``` 如图所示: ![mark](http://qiniu.newthink.cc/blog/20171024-110016098.png) 这时我们访问 `http://thinkcmf/admin` 或者 `http://thinkcmf/test` 就者可以访问了! ![mark](http://qiniu.newthink.cc/blog/20171024-111303217.png) 这个值是在这里进行设置的!! 后台登录地址也很明显可以访问 ![mark](http://qiniu.newthink.cc/blog/20171024-114648136.png) ### 备注二 ``` $site_admin_url_password = config("cmf_SITE_ADMIN_URL_PASSWORD"); $upw = session("__CMF_UPW__"); ``` 这个应该是没有用的! ### 备注三:hook ``` $result = hook_one('admin_login'); if (!empty($result)) { return $result; } ``` 如果想要在登录时加载一个 `hook`钩子插件,可以在这里加载一个这样的代码 ![mark](http://qiniu.newthink.cc/blog/20171024-112015279.png)