0

我想访问安全职责(在代码中),但我不知道它们存储在哪里(在哪个表中)?

权限存储在 SecurityTask 中,现在我需要知道职责存储在 AX 2012 中的位置。

谢谢你。

4

2 回答 2

1

我在这里找到它:http: //arsalanax.blogspot.be/2012/02/role-based-security-in-ax.html

角色存储在 SecurityRole 中

SecurityUserRole 中的用户到角色映射

存储在 SecurityTask 中的职责和权限

权限映射的职责存储在 SecuritySubTask 中

角色到职责的映射存储在 SecurityRoleTaskGrant

更新(已添加查询)

SecurityTaskEntryPoint  taskEntryPoint;
SecurityRole            role;
SecurityRoleTaskGrant   taskGrant;
SecuritySubTask         subTask;
SecurityTask            privilege;
str privName;
str dutyName;
str entrName;
str accessLevel;
;

while select taskEntryPoint
join subTask
    where subTask.SecuritySubTask == taskEntryPoint.SecurityTask
join taskGrant
    where taskGrant.SecurityTask == subTask.SecurityTask
join role
    where role.RecId == taskGrant.SecurityRole
    &&  role.AotName like 'Sales*'
    //|| role.AotName like 'System*'
{
     if (subTask.RecId)
    {
        switch (taskEntryPoint.PermissionGroup)
        {
            case AccessRight::View:
                accessLevel = "R";
                break;
            case AccessRight::Edit:
                accessLevel = "U";
                break;
            case AccessRight::Add:
                accessLevel = "C";
                break;
            case AccessRight::Delete:
                accessLevel = "D";
                break;
            default:
                accessLevel = "";
                break;
        }
    }

    select privilege
        where privilege.RecId == taskGrant.SecurityTask
        && SecurityTaskType::Duty == privilege.Type;
    dutyName = privilege.AotName;

    select privilege
        where privilege.RecId == subTask.SecuritySubTask
        && SecurityTaskType::Privilege == privilege.Type;
    privName = privilege.AotName;

    info(strFmt("EP: %1, Pr: '%2', Du: %3, Ro: %4, Ac: %5", taskEntryPoint.EntryPoint, privName, dutyName, role.AotName, accessLevel));
}
于 2012-11-16T08:18:06.860 回答
1

安全职责在表中SecurityTask,类型等于 1 (SecurityTaskType::Duty)。

安全权限在SecurityTask类型等于 0 的表中 (SecurityTaskType::Privilege)

安全进程周期在表中SecurityTask,类型等于 2 (SecurityTaskType::ProcessCycle)。

所有这些对象也在表中(或者更确切地说是视图)SysModelElement(ElementType == 135 的职责)。

于 2012-11-16T08:20:54.683 回答