程序需要在有auth认证的mongodb下运行eval函数或命令时提示无权限

程序需要在有auth认证的mongodb下运行eval函数或命令时提示无权限,第1张

mongodb本来是没有权限问题的,因为默认设置无用户无密码,

为了保障安全,需要手动设置一个账号和用户,这里不细谈如何创建有权限认证的mongodb账号(如mysql的root用户)

笔者用的是golang101+mongodb36,之前项目是不认证的程序,加了认证之后提示没有权限 *** 作

那么首先在

连接地址处加上用户和密码(马赛克处是密码)

运行单元测试发现,增查删改功能正常,但是

eval函数还是说我没有授权

看了官网文档说

需要grant一个anyAction on anyResource的user

参考于

解决办法如下:

登录mongodb,执行以下命令:

其中yourusername和yourpassword是自己设置的用户和密码(这个用户前提是已经有了root权限)

问题解决。

登陆之后 我们取得了用户的一权限。然后就进行验证

//检查当前 *** 作是否需要认证

static function checkAccess()

{

//如果项目要求认证,并且当前模块需要认证,则进行权限认证

if( C('USER_AUTH_ON') ){

$_module = array();

$_action = array();

if("" != C('REQUIRE_AUTH_MODULE')) {

//需要认证的模块

$_module['yes'] = explode(',',strtoupper(C('REQUIRE_AUTH_MODULE')));

}else {

//无需认证的模块

$_module['no'] = explode(',',strtoupper(C('NOT_AUTH_MODULE')));

}

//检查当前模块是否需要认证in_array 查找A是否存在B数组中

if((!empty($_module['no']) && !in_array(strtoupper(MODULE_NAME),$_module['no'])) || (!empty($_module['yes']) && in_array(strtoupper(MODULE_NAME),$_module['yes']))) {

if("" != C('REQUIRE_AUTH_ACTION')) {

//需要认证的 *** 作

$_action['yes'] = explode(',',strtoupper(C('REQUIRE_AUTH_ACTION')));

}else {

//无需认证的 *** 作

$_action['no'] = explode(',',strtoupper(C('NOT_AUTH_ACTION')));

}

//检查当前 *** 作是否需要认证

if((!empty($_action['no']) && !in_array(strtoupper(ACTION_NAME),$_action['no'])) || (!empty($_action['yes']) && in_array(strtoupper(ACTION_NAME),$_action['yes']))) {

return true;

}else {

return false;

}

}else {

return false;

}

}

return false;

}

//权限认证的过滤器方法 //默认为当前模块 所以要放在头部

static public function AccessDecision($appName=APP_NAME)

{

//检查是否需要认证

if(RBAC::checkAccess()) {

//存在认证识别号,则进行进一步的访问决策

$accessGuid = md5($appNameMODULE_NAMEACTION_NAME);

if(empty($_SESSION[C('ADMIN_AUTH_KEY')])) {

if(C('USER_AUTH_TYPE')==2) {

//加强验证和即时验证模式 更加安全 后台权限修改可以即时生效

//通过数据库进行访问检查

$accessList = RBAC::getAccessList($_SESSION[C('USER_AUTH_KEY')]);//获取权限

}else {

// 如果是管理员或者当前 *** 作已经认证过,无需再次认证

if( $_SESSION[$accessGuid]) {

return true;

}

//登录验证模式,比较登录后保存的权限访问列表

$accessList = $_SESSION['_ACCESS_LIST'];

}

//判断是否为组件化模式,如果是,验证其全模块名

$module = defined('P_MODULE_NAME') P_MODULE_NAME : MODULE_NAME;

if(!isset($accessList[strtoupper($appName)][strtoupper($module)][strtoupper(ACTION_NAME)])) {

$_SESSION[$accessGuid] = false;

return false;

}

else {

$_SESSION[$accessGuid] = true;

}

}else{

//管理员无需认证

return true;

}

}

return true;

}

以上就是关于程序需要在有auth认证的mongodb下运行eval函数或命令时提示无权限全部的内容,包括:程序需要在有auth认证的mongodb下运行eval函数或命令时提示无权限、求助,TP框架下RBAC获取权限问题、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10138946.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存