基于角色的身份验证

   web.config
None.gif   < authentication  mode ="Forms" >
None.gif         
< forms  name ="app"  loginUrl ="bb.aspx" />
None.gif      
</ authentication >
None.gif      
< authorization >
None.gif         
< deny  users ="?" />
None.gif      
</ authorization >

Roles.xml
None.gif <? xml version="1.0" encoding="utf-8"  ?>  
None.gif
< roles >
None.gif  
< user
None.gif    
name ="Bob"
None.gif    roles
="Sales"   />
None.gif  
< user
None.gif    
name ="Jane"
None.gif    roles
="Supervisor,Sales"   />
None.gif
</ roles >




   bb.aspx

 
None.gif private   void  Button1_Click( object  sender, System.EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gifSystem.Web.Security .FormsAuthentication .RedirectFromLoginPage(
this.TextBox1 .Text,false);
InBlock.gif
ExpandedBlockEnd.gif}

Global.asax

 
None.gif      protected   void  Application_AuthenticateRequest(Object sender, EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif
InBlock.gif            
string  strUserName;
InBlock.gif            XmlDocument objRoles;
InBlock.gif            XmlNode objNode;
InBlock.gif            
string  strXPath;
InBlock.gif
InBlock.gif            objRoles 
= GetRoles();
InBlock.gif            
if ( Context.Request.IsAuthenticated )
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                strUserName 
= Context.User.Identity.Name;
InBlock.gif                strXPath 
= string.Format( "user[@name='{0}']", strUserName );
InBlock.gif                objNode 
= objRoles.DocumentElement.SelectSingleNode( strXPath );
InBlock.gif                
if (objNode != null)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
string[] arrRoles = objNode.Attributes["roles"].Value.Split (new char[] {','}); 
                           // 这很重要返回为  string[] 类型,要保证被分割.......
    
InBlock.gif             
InBlock.gif
InBlock.gif                       
InBlock.gif                    
foreach(string s in arrRoles)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        
this.Response .Write (s+ arrRoles.Length .ToString ());
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    Context.User 
= new GenericPrincipal( Context.User.Identity, arrRoles);
ExpandedSubBlockEnd.gif                }

ExpandedSubBlockEnd.gif            }

ExpandedBlockEnd.gif        }

None.gif
None.gif
None.gif        XmlDocument GetRoles() 
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            XmlDocument objRoles;
InBlock.gif
InBlock.gif            objRoles 
= (XmlDocument)Context.Cache[ "Roles" ];
InBlock.gif            
if ( objRoles == null )
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                objRoles 
= new XmlDocument();
InBlock.gif                objRoles.Load( Server.MapPath( 
"Roles.xml" ) );
InBlock.gif                Context.Cache.Insert( 
"Roles", objRoles,  new CacheDependency( Server.MapPath( "Roles.xml" ) ) );
ExpandedSubBlockEnd.gif            }

InBlock.gif            
return objRoles;
ExpandedBlockEnd.gif        }


Default.aspx

None.gif if  ( User.IsInRole(  " Sales "  ) )
ExpandedBlockStart.gifContractedBlock.gif            
dot.gif {
InBlock.gif                Response.Write( 
"You have Sales permissions!" );
InBlock.gif            
//    User.Identity .AuthenticationType.ToString ();
InBlock.gif

ExpandedBlockEnd.gif            }
 
None.gif           
if  (User.IsInRole ( " Supervisor " ))
ExpandedBlockStart.gifContractedBlock.gif            
dot.gif {
InBlock.gif                Response.Write( 
"You have supervisor   permissions!" );
InBlock.gif                
ExpandedBlockEnd.gif            }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值