UserId              _userId = "IT001";
UserGroupId _userGroupId = "ABC_1";
DomainId _domainId="DH";
DataAreaId _companyId = "CG";
SecurityKeyset _SecurityKeyset;
AccessType _newAccessType = AccessType::Edit;
AccessType _curAccessType;
str _MenuItemName = "SalesTable";
; _SecurityKeyset = new SecurityKeyset();
//begin user group security set
_SecurityKeyset .loadGroupRights(_userGroupId ,_domainId);
//获取销售单画面的访问权限
_curAccessType = _SecurityKeyset.menuItemAccess(_MenuItemName , AccessRecordType::MenuItemDisplay); //给销售单画面赋权限
_SecurityKeyset.menuItemAccess(_MenuItemName , AccessRecordType::MenuItemDisplay,_newAccessType ); //带第三个参数表示修改权限。
//Save 权限
xAccessRightsList::saveSecurityRights(se.packTouched(),_userGroupId , _domainId); //begin user group security set
_SecurityKeyset .loadUserRights(_userId,_companyId );
//获取用户销售单画面的访问权限
_curAccessType = _SecurityKeyset.menuItemAccess(_MenuItemName , AccessRecordType::MenuItemDisplay);

若想将一个用户组的权限完全复制给另外一个用户组。

 SecurityKeyset    seSource;

 UserGroupId      groupSource,groupDest;
DomainId domainId = "DH";
;
groupSource = "Test1";
groupDest ="Test2";
seSource = new SecurityKeyset();
seSource.loadGroupRights(groupSource,domainId); xAccessRightsList::saveSecurityRights(seSource.pack(), groupDest, domainId );//复制到新组Test2

扩展一下,可以得到某对象所有用户组的权限,并导出到Excel,以供IT审计。这在权限检查中非常有用,节省一个个打开看的时间了。

另,在后头涉及到权限的table\AccessRightsList, 同时我们可以做一个hotfix,加一个新的table\AccessRightsListLog,记录用户对权限的修改,以便后面追查。

table\AccessRightsListLog表结构。

CREATE TABLE [dbo].[ACCESSRIGHTSLISTLOG](
[GROUPID] [nvarchar](10) NULL,
[DOMAINID] [nvarchar](10) NULL,
[RECORDTYPE] [int] NULL,
[PARENTID] [int] NULL,
[ID] [int] NULL,
[ELEMENTNAME] [nvarchar](40) NULL,
[ACCESSTYPE] [int] NULL,
[ACCESSTYPEFKEYUSE] [int] NULL,
[MODIFIEDDATE] [datetime] NULL,
[MODIFIEDTIME] [int] NULL,
[MODIFIEDBY] [nvarchar](5) NULL,
[CREATEDDATE] [datetime] NULL,
[CREATEDTIME] [int] NULL,
[CREATEDBY] [nvarchar](5) NULL,
[RECVERSION] [int] NULL,
[RECID] [bigint] NULL,
[USERID] [nvarchar](10) NULL,
[LOGTYPE] [nvarchar](3) NULL,
[LOGDATE] [datetime] NULL
)

附AccessRightsList\RecordType的枚举值列表。

附AccessRightsList\AccessType的枚举值列表。

Dynamic AX 4.0 用户组权限SecurityKey的更多相关文章

  1. 20140425 malloc和new不同 dynamic何时返回0

    1.malloc/free和new/delete区别 http://blog.csdn.net/hackbuteer1/article/details/6789164 相同点:都可用于申请动态内存和释 ...

  2. 修改webserver站点用户组权限

    例如webserver站点目录为webtest 搭建nginxwebserver服务器的时候,默认的用户和用户组权限为nginx:nginx, 即nginx.conf 和php-frm.conf 中默 ...

  3. Android 6.0 - 动态权限管理的解决方案

    Android 6.0版本(Api 23)推出了很多新的特性, 大幅提升了用户体验, 同时也为程序员带来新的负担. 动态权限管理就是这样, 一方面让用户更加容易的控制自己的隐私, 一方面需要重新适配应 ...

  4. Report processing of Microsoft Dynamic AX

    Report processing of Microsoft Dynamic AX 版权声明:本文为博主原创文章,未经博主允许不得转载. The implementation of a general ...

  5. Android6.0获取权限

    照着<第一行代码>打代码,然并卵,感叹技术进步的神速.最后提醒一点:IT类的书籍一定要注意出版时间!出版时间!出版时间!重要的事情说三遍 问题出在android6.0的权限获取问题上,以前 ...

  6. xcode7.3 升级 xcode8.0 后权限设置问题(升级xcode 8.0 后构建版本不显示问题)

    xcode7.3 升级 xcode8.0 后权限设置问题(升级xcode 8.0 后构建版本不显示问题) 前两天为了适配 iOS10 的系统 我将xcode 7.3 升级到了 xcode 8.0 但是 ...

  7. MongoDB 3.0安全权限访问控制(Windows版)

    MongoDB 3.0安全权限访问控制(Windows版) 1.首先,不使用 –auth 参数,启动 mongoDB: mongod --dbpath "d:\mongodb\data\db ...

  8. Android 6.0之权限管理

    安卓6.0的权限体系分为非敏感权限和敏感权限,非敏感权限默认获取,可以手动关闭. 敏感权限必须由app在运行时动态申请.而存储读写空间权限是一个敏感权限,不是一个“很正常的必须权限”. 安卓并不是想要 ...

  9. Android 6.0的权限问题

    Android 6.0的权限获取不同于别的版本,具体的实例如下: if (ContextCompat.checkSelfPermission(this, Manifest.permission.REA ...

随机推荐

  1. C和C++混合编程

    extern "C"表示编译生成的内部符号名使用C约定.C++支持函数重载,而C不支持,两者的编译规则也不一样.函数被C++编译后在符号库中的名字与C语言的不 同.例如,假设某个函 ...

  2. angular.js form

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. SecureCRT 的安装和注册

    基本信息:win764位 准备: 下载软件包:scrt70-x86.exe,和SecureCRT.7.3.keygen.exe注册机 下载地址:http://download.csdn.net/det ...

  4. websphere应用程序的使用

    1.服务器板块 1.1 jvm虚拟机的通用参数: agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=7777Dcom.ibm.w ...

  5. Java注解实践--annotation学习三

    注解对代码的语意没有直接影响, 他们只负责提供信息给相关的程序使用. 注解永远不会改变被注解代码的含义, 但可以通过工具对被注解的代码进行特殊处理. JDK 基本Annotation 注解 说明 @O ...

  6. solr学习之添加文档

    一.开篇语 其实Solr就是一个你可以通过他来查询文档的东西,他整个都是基于Document的,那么这些Document从何而来列?  当然是我们给他,而这些来源就包括了:数据库文件,XML,Json ...

  7. [ActionScript 3.0] AS3 绘制正四面体(线条)

    package { import flash.display.MovieClip; import flash.display.Sprite; import flash.events.Event; im ...

  8. ROWNUM-Oracle中的分页代码

    SELECT * FROM (SELECT ENAME,SAL,ROWNUM RN FROM EMP WHERE ROWNUM <= @CURRENTPAGE*@PAGESIZE) SUB );

  9. 用inno Setup制作web项目安装包

    http://www.cnblogs.com/xionghui/archive/2012/03/22/2411207.html 用inno Setup制作安装包 新建一个文件夹exambody,放ap ...

  10. C#中List的Find方法的使用

    查找List中的某个值,可以使用循环遍历对比,查找出结果.C#中提供了Find方法,可以直接使用,只要查找条件传入就可.如下: public class RecordInfo { private st ...