zoukankan      html  css  js  c++  java
  • 在xaf 14 中实现 Tonyyang原文中的action权限

    具体实现过程,主要修改了以下几个地方:

    第一:角色和用户类中需要修改成SecurityStrategy的方式:

    具体代码

    MySecurityRole:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Security;
    using System.Text;
    using DevExpress.ExpressApp.Security.Strategy;
    using DevExpress.Xpo;
    using DevExpress.Persistent.Base;
    using DevExpress.Persistent.Validation;
    using System.Collections.ObjectModel;
    using DevExpress.Persistent.Base.Security;
    namespace SecurityDemoTest.Module.BusinessObjects
    {
        [DefaultClassOptions]
        public class MySecurityRole : SecuritySystemRole
        {
            public const string DefaultAdministratorsGroupName = "Administrators";
            //private List<IPermission> _Permissions = new List<IPermission>();
            public MySecurityRole(Session session)
                : base(session)
            {
    
            }
    
            [Association("ActionDatas-MySecurityRoles")]
            public XPCollection<ActionData> ActionPermissions
            {
                get
                {
                    return GetCollection<ActionData>("ActionPermissions");
                }
            }
        }
    }
    

      MySecurityUser:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    //using DevExpress.ExpressApp.Security;
    using System.Drawing;
    using System.Security;
    using DevExpress.ExpressApp.Security.Strategy;
    using DevExpress.Persistent.Validation;
    using DevExpress.Xpo;
    using DevExpress.Persistent.Base;
    using DevExpress.Persistent.Base.General;
    using DevExpress.Persistent.Base.Security;
    using DevExpress.ExpressApp.DC;
    using System.ComponentModel;
    //using WinWebSolution.Module;
    
    
    namespace SecurityDemoTest.Module.BusinessObjects
    {
        [XafDisplayName("User"), Persistent, ImageName("BO_User")]
        public class MySecurityUser : SecuritySystemUser // SecurityUserWithRolesBase
        {
            public MySecurityUser(DevExpress.Xpo.Session session)
                : base(session)   
            {
                //_Permissions = new List<IPermission>();
            }
            
            [Persistent("Color")]
            private int _Color;
            [NonPersistent]
            public Color Color
            {
                get { return Color.FromArgb(_Color); }
                set { SetPropertyValue("Color", ref _Color, value.ToArgb()); }
            }
            public override void AfterConstruction()
            {
                base.AfterConstruction();
                _Color = Color.White.ToArgb();
            }
            private string _Description;
            public string Description
            {
                get
                {
                    return _Description;
                }
                set
                {
                    SetPropertyValue("Description", ref _Description, value);
                }
            }
    
    
        }
    }
    

      第二:需要在ViewController中添加如下代码:

            private static bool IsAllowAccessAction(string actionId)
            {
                MySecurityUser currentUser = SecuritySystem.CurrentUser as MySecurityUser;
                Guard.ArgumentNotNull(currentUser, "CurrentUser");
                Guard.ArgumentNotNullOrEmpty(actionId, "ActionId");
                foreach (MySecurityRole role in currentUser.Roles)
                {
                    foreach (ActionData ap in role.ActionPermissions)
                    {
                        if (ap.ActionId == actionId && ap.Kind == "Custom")
                            return true;
                    }
                }
                return false;
            }
  • 相关阅读:
    数据仓库-数据清洗
    数据仓库-维度模型(模型类型、建模过程)
    数据仓库-维度
    I am going to India on a business trip
    Android O编译前修改文件和目录权限
    apktool介绍
    Android中国官网资源网站
    android7.0后对于detected problems with app native libraries提示框显示
    android7.0后对于file://的限制
    android7.0对于SharedPreferences设置模式的限制
  • 原文地址:https://www.cnblogs.com/ddlzq/p/3924565.html
Copyright © 2011-2022 走看看