CS用户角色扩展

Cs的架构比较庞大,前阵子自己写了新闻模块。如果用里面集成的角色验证还是不太好,所以自己动手重新改了一下里面的用户角色,Cs20的用户管理是CommunityServerComponents20项目Components文件夹下面的User类,经常用Asp.NET集成身份验证应该比较容易就看出来应当怎么改了。
主要的角色相关的代码如下
  #region  IsRoles

        
public   bool  IsInRoles(  string [] roleNames ) {

            
if (roleNames  ==   null   ||  roleNames.Length  ==   0 )
                
return   false ;

            
string  [] userRoles  =  Roles.GetUserRoleNames(  this .Username );
            
foreach string  userRole  in  userRoles ) {
                
foreach string  roleName  in  roleNames ) {
                    
if string .Compare(roleName,userRole, true ==   0  )
                        
return   true ;
                }
            }
            
return   false ;
        }

        
///      <summary>
        
///     Specifies if a user    in a System Administator administrator or not.
        
///      </summary>
         public   bool     IsAdministrator    
        {
            
get     
            { 
                
try     
                {
                    
return  IsInRoles(  new   string [] { roles.SystemAdministrator } );
                }
                
catch     {}

                
return   false ;
            }                     
        }

        
///      <summary>
        
///     Specifies if a user    in an administrator    or not.
        
///      </summary>
         public   bool     IsBlogAdministrator    
        {
            
get     
            { 
                
try     
                {
                    
return  IsInRoles(  new   string [] { roles.SystemAdministrator, roles.BlogAdministrator } );
                }
                
catch     {}

                
return   false ;
            }                     
        }

        
///      <summary>
        
///     Specifies if a user    in an administrator    or not.
        
///      </summary>
         public   bool     IsGalleryAdministrator    
        {
            
get     
            { 
                
try     
                {
                    
return  IsInRoles(  new   string [] { roles.SystemAdministrator, roles.GalleryAdministrator } );
                }
                
catch     {}

                
return   false ;
            }                     
        }

        
///      <summary>
        
///     Specifies if a user    in an administrator    or not.
        
///      </summary>
         public   bool     IsFileAdministrator    
        {
            
get     
            { 
                
try     
                {
                    
return  IsInRoles(  new   string [] { roles.SystemAdministrator, roles.FileAdministrator } );
                }
                
catch     {}

                
return   false ;
            }                     
        }

        
public   bool  IsReaderAdministrator
        {
            
get
            {
                
try     
                {
                    
return  IsInRoles(  new   string [] { roles.SystemAdministrator, roles.ReaderAdministrator } );
                }
                
catch     {}

                
return   false ;
            }
        }

        
public   bool  IsMembershipAdministrator
        {
            
get
            {
                
try     
                {
                    
return  IsInRoles(  new   string [] { roles.SystemAdministrator, roles.MembershipAdministrator } );
                }
                
catch     {}

                
return   false ;
            }
        }

        
///      <summary>
        
///     Specifies if a user    in an administrator    or not.
        
///      </summary>
         public   bool     IsForumAdministrator    
        {
            
get     
            { 
                
try     
                {
                    
return  IsInRoles(  new   string [] { roles.SystemAdministrator, roles.ForumsAdministrator } );
                }
                
catch     {}

                
return   false ;
            }                     
        }

        
///      <summary>
        
///     Specifies if a user    in an administrator    or not.
        
///      </summary>
         public   bool     IsModerator    
        {
            
get     
            { 
                
try     
                {
                    
return  IsInRoles(  new   string [] { roles.SystemAdministrator, roles.Moderator } );
                } 
                
catch     {}

                
return   false ;
            }
        }



        
///   <summary>
        
///  Lookup to determine if this user belongs to the editor role.
        
///   </summary>
         public   bool  IsEditor 
        {
            
get  
            {
                
try  
                {
                    
return  IsInRoles(  new   string [] {roles.SystemAdministrator, roles.Editor } );
                }
                
catch  {}

                
return   false ;
            }
        }


        
///   <summary>
        
///  新增新闻管理员
        
///   </summary>
         public   bool  IsNewsAdministrator
        {
            
get  
            {
                
try
                {
                    
return  IsInRoles( new   string [] { roles.SystemAdministrator, roles.NewsAdministrator });
                }
                
catch  { }
                
return   false ;
            }
        }





//         public static bool IsInRole(string rolename) 
//         {
//             return HttpContext.Current.User.IsInRole(rolename);
//         }

        
#endregion
最后一个新闻管理员的角色就是新加的。

然后找到该项目Configuration文件夹下面的RolesConfiguration.cs类
加上这段

        
// 新增新闻管理员角色
        [XmlAttribute( " newsAdministrator " )]
        
public   string  NewsAdministrator
        {
            
get  {  return  _newsAdministrator; }
            
set  {  this ._newsAdministrator  =  value; }
        }
并修改一下RoleList方法,把NewsAdministrator加上
  public   string  RoleList()
        {
            
return   string .Format( " ^({0}|{1}|{2}|{3}|{4}|{5}|{6}|{7}|{8}|{9}|{10}|{11}|{12})$ " ,Everyone,RegisteredUsers,SystemAdministrator,Moderator,Editor,ForumsAdministrator,GalleryAdministrator,BlogAdministrator,Owners,FileAdministrator,ReaderAdministrator,MembershipAdministrator,NewsAdministrator);
        }

最后还需要到CS角色管理中加上同名的NewsAdministrator角色

转载于:https://www.cnblogs.com/Bruce_H21/archive/2007/04/10/706668.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值