前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Caché 变量大全 $ROLES 变量

Caché 变量大全 $ROLES 变量

作者头像
用户7741497
发布2022-05-10 18:48:46
2790
发布2022-05-10 18:48:46
举报
文章被收录于专栏:hml_知识记录

Caché 变量大全 $ROLES 变量

包含分配给当前进程的角色。

大纲

代码语言:javascript
复制
$ROLES

描述

$ROLES包含分配给当前进程的角色列表。此角色列表由逗号分隔的字符串组成,该字符串可以包含用户角色和添加的角色。

通过使用SQL GRANT语句或使用Management Portal System Administration、Security、Users选项将角色分配给用户。选择用户名以编辑其定义,然后选择角色选项卡将该用户分配给角色。可以使用SQL CREATE ROLE语句定义角色,使用SQL DROP ROLE语句删除角色。必须先定义角色,然后才能将其分配给用户。可以使用SQL REVOKE语句撤销用户的角色。

使用JOB命令创建进程时,它将继承与其父进程相同的$ROLES$USERNAME值。

当进程执行I/O重定向时,将使用用户的LOGIN $ROLES值而不是当前的$ROLES值执行此重定向。

授予未列出的角色的角色

将角色授予另一个角色是仅可通过CachéSQL使用的概念。在SQL中使用授予角色的角色来确定用于检查SQL特权的用户角色列表。它们不能被ObjectScript访问。无法通过CachéSystem Security将角色授予其他角色。因此,$ROLES特殊变量列表不包含SQL操作已授予当前角色的任何角色。

SET $ROLES

可以使用SET命令更改$ROLES中包含的列表的“添加角色”部分。设置$ROLES仅会更改进程的“添加角色”。它不能更改其用户角色。将$ROLES设置为“其他角色”的其他列表是受限制的系统功能。但是,此类限制不适用于将$ROLES设置为空字符串,这将删除“添加角色”列表。

必须先定义角色,然后才能添加角色。可以使用SQL CREATE ROLE命令定义角色。 CREATE ROLE不授予角色任何特权。要为角色分配特权,请使用SQL GRANT语句或管理门户网站系统管理,安全性,角色界面。

在使用SET $ROLES升级流程角色之前,必须发出NEW $ROLES语句。

NEW $ROLES

NEW $ROLES堆栈$ROLES$USERNAME的当前值。可以在$ROLES上使用NEW命令,而没有安全限制。

发出NEW $ROLES,然后SET $ROLES以提供“添加的角色”。然后,可以创建使用这些“添加的角色”的对象实例。如果退出此例程,则Caché将使用“添加的角色”关闭对象,然后还原为堆叠的$ROLES值。

示例

以下示例返回当前流程的角色列表。

代码语言:javascript
复制
DHC-APP>WRITE $ROLES
%All,%Manager,%Developer,%DB_%DEFAULT,%DB_CACHE,%DB_CACHEAUDIT,%DB_CACHELIB,%DB_CACHESYS,%DB_CACHETEMP,%DB_DOCBOOK,%DB_DTApp,%DB_SAMPLES,%DB_TrakApp,%DB_USER,%Operator,%SQL,%SQLTuneTable,DTRole,Role_dhact,Role_dhapp,Role_dhdev,Role_dhduty,Role_dhreadonly,Role_dhsuper,Role_dhview,Role_webservice,TrakUser

以下示例首先创建角色Vendor, Sales, 和 Contractor。然后,它显示以逗号分隔的默认角色列表(包含用户角色和添加的角色)。第一个SET $ROLES用Sales 和 Contractor.这两个角色替换“添加的角色”列表。第二个SET $ROLES将Vendor角色连接到“已添加角色”列表。最后的SET $ROLES将“已添加角色”列表设置为空字符串,从而删除所有“已添加角色”。用户角色在整个过程中保持不变:

代码语言:javascript
复制
/// d ##class(PHA.TEST.SpecialVariables).Roles()
ClassMethod Roles()
{
CreateRoles
    &sql(CREATE ROLE Vendor)
    &sql(CREATE ROLE Sales)
    &sql(CREATE ROLE Contractor)
    IF SQLCODE=0 { 
        WRITE !,"创建新角色"
        DO SetRoles 
    } ELSEIF SQLCODE=-118 {
        WRITE !,"角色已经存在"
        DO SetRoles 
    } ELSE { 
        WRITE !,"创建角色失败, SQLCODE=",SQLCODE 
    }
SetRoles()
    WRITE !,"初始化: ",$ROLES
    NEW $ROLES
    SET $ROLES="Sales,Contractor"
    WRITE !,"代替: ",$ROLES
    NEW $ROLES
    SET $ROLES=$ROLES_",Vendor"
    WRITE !,"Concatenated: ",$ROLES
    SET $ROLES=""
    WRITE !,"Nulled: ",$ROLES
}
代码语言:javascript
复制
DHC-APP>d ##class(PHA.TEST.SpecialVariables).Roles()
 
角色已经存在
初始化: %All,%Manager,%Developer,%DB_%DEFAULT,%DB_CACHE,%DB_CACHEAUDIT,%DB_CACHE   LIB,%DB_CACHESYS,%DB_CACHETEMP,%DB_DOCBOOK,%DB_DTApp,%DB_SAMPLES,%DB_TrakApp,%DB_USER,%Operator,%SQL,%SQLTuneTable,DTRole,Role_dhact,Role_dhapp,Role_dhdev,Role_dhduty,Role_dhreadonly,Role_dhsuper,Role_dhview,Role_webservice,TrakUser
代替: %All,%Manager,%Developer,%DB_%DEFAULT,%DB_CACHE,%DB_CACHEAUDIT,%DB_CACHELI  B,%DB_CACHESYS,%DB_CACHETEMP,%DB_DOCBOOK,%DB_DTApp,%DB_SAMPLES,%DB_TrakApp,%DB_USER,%Operator,%SQL,%SQLTuneTable,DTRole,Role_dhact,Role_dhapp,Role_dhdev,Role_dhduty,Role_dhreadonly,Role_dhsuper,Role_dhview,Role_webservice,TrakUser,Sales,Contractor
Concatenated: %All,%Manager,%Developer,%DB_%DEFAULT,%DB_CACHE,%DB_CACHEAUDIT,%DB_CACHELIB,%DB_CACHESYS,%DB_CACHETEMP,%DB_DOCBOOK,%DB_DTApp,%DB_SAMPLES,%DB_TrakApp,%DB_USER,%Operator,%SQL,%SQLTuneTable,DTRole,Role_dhact,Role_dhapp,Role_dhdev,Role_dhduty,Role_dhreadonly,Role_dhsuper,Role_dhview,Role_webservice,TrakUser,Vendor,Sales,Contractor
Nulled: %All,%Manager,%Developer,%DB_%DEFAULT,%DB_CACHE,%DB_CACHEAUDIT,%DB_CACHELIB,%DB_CACHESYS,%DB_CACHETEMP,%DB_DOCBOOK,%DB_DTApp,%DB_SAMPLES,%DB_TrakApp,%DB_USER,%Operator,%SQL,%SQLTuneTable,DTRole,Role_dhact,Role_dhapp,Role_dhdev,Role_dhduty,Role_dhreadonly,Role_dhsuper,Role_dhview,Role_webservice,TrakUser

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Caché 变量大全 $ROLES 变量
  • 大纲
  • 描述
    • 授予未列出的角色的角色
      • SET $ROLES
        • NEW $ROLES
        • 示例
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档