enum 权限

简介:    [FlagsAttribute]      public enum RoleType     {         未登录 = 0,         普通用户 = 1,         锁定=2,         旅行社用户 = 32,         旅行社创建者 = 64, ...
   [FlagsAttribute] 
    
public   enum  RoleType
    {
        未登录 
=   0 ,
        普通用户 
=   1 ,
        锁定
= 2 ,
        旅行社用户 
=   32 ,
        旅行社创建者 
=   64 ,
        外包用户 
=   128 ,
        编辑 
=   512 ,
        管理员 
=   1024
    }
    
public   class  Role
    {
        
private  RoleType _RoleType  =  RoleType.未登录;
        
///   <summary>
        
///  初始化
        
///   </summary>
        
///   <param name="role"></param>
         public  Role( object  role)
        {
            
if  (role  !=   null )
                _RoleType 
=  (RoleType) role;
        }
        
///   <summary>
        
///  当前类封装的roleType
        
///   </summary>
         public  RoleType RoleType
        {
            
get  {  return  _RoleType; }
            
set  { _RoleType  =  value; }
        }
        
///   <summary>
        
///  当前的role对象是否包含某个TYPE
        
///   </summary>
        
///   <param name="rt"></param>
        
///   <returns></returns>
         public   bool  Contains(RoleType rt)
        {
            
return  (_RoleType  &  rt)  ==  rt;
        }

        
public   bool  Contains( params  RoleType[] rt) {
            
return   this .Contains(rt.ToList());
        }
        
///   <summary>
        
///  当前的role对象是否包含某些TYPE
        
///   </summary>
        
///   <param name="rts"></param>
        
///   <returns></returns>
         public   bool  Contains(IEnumerable < RoleType >  rts)
        {
            
bool  ret  =   false ;
            
foreach  (RoleType rt  in  rts)
                
if  ( this .Contains(rt))
                {
                    ret 
=   true ;
                    
break ;
                }
            
return  ret;
        }
        
///   <summary>
        
///  为当前对象添加权限
        
///   </summary>
        
///   <param name="rt"></param>
        
///   <returns></returns>
         public   void  Add(RoleType rt)
        {
             RoleType 
|=  rt;
        }
        
///   <summary>
        
///  当前用户是否登录了
        
///   </summary>
         public   bool  IsLogin
        {
            
get
            {
                
return  GetRoleTypeList.Count  !=   0 ;
            }
        }

        
///   <summary>
        
///  列表,当前所有权限
        
///   </summary>
         public  List < String >  GetRoleTypeList
        {
            
get
            {
                var lis 
=
                    Enum.GetValues(
typeof  (RoleType));
                var list 
=   new  List < string > ();
                
foreach ( object  o  in  lis)
                {
                    var r 
=  (RoleType) o;
                    
if  (Contains(r)  &&  r  !=  RoleType.未登录)
                        list.Add(r.ToString());
                }
                
return  list;

            }
        }

    }

 

使用方法如下

 

存数据库int字段

 取后存Session["status"]中,进行如下属性的访问即可(这个存在于CHUser类中)

 

        /// <summary>
        /// 获取当前用户状态
        /// </summary>
        static public Role Status {
            get {
                int status = 0;
                if (HttpContext.Current.Session["status"] != null)
                    int.TryParse(HttpContext.Current.Session["status"].ToString(), out status);
                return new Role(status);
            }

        }

 

 <%
    if (CHUser.Status.Contains(RoleType.管理员))
    {
    %>
    <li><%=Html.ActionLink("用户管理", "UserManage", "Admin")%></li>
    <%
    }

%>

判断时



目录
相关文章
|
1月前
|
C语言
C enum(枚举)
C enum(枚举)
11 0
|
4月前
|
程序员 测试技术 C++
[C++] enum枚举类型用法
[C++] enum枚举类型用法
36 0
|
6月前
EF数据类里面使用枚举类型enum
EF数据类里面使用枚举类型enum
19 0
Enum
Enum
68 0
|
Java C语言 Spring
enum(枚举)
枚举是 C 语言中的一种基本数据类型,它可以让数据更简洁,更易读。
187 0
|
存储 NoSQL Java
数据类型-set 实现权限校验| 学习笔记
快速学习数据类型-set 实现权限校验
65 0
数据类型-set 实现权限校验| 学习笔记
|
程序员 网络安全 C++
C/C++ enum使用
C/C++ enum使用
177 0
|
Java 编译器 程序员
Enum介绍及高级使用
枚举较为常用,有必要总结一下使用点以及高级用法
1084 0
|
安全 C# 存储