zoukankan      html  css  js  c++  java
  • 基于角色的身份验证

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

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




       bb.aspx

     
    private void Button1_Click(object sender, System.EventArgs e)
    {
    System.Web.Security .FormsAuthentication .RedirectFromLoginPage(
    this.TextBox1 .Text,false);

    }

    Global.asax

     
        protected void Application_AuthenticateRequest(Object sender, EventArgs e)
            
    {

                
    string  strUserName;
                XmlDocument objRoles;
                XmlNode objNode;
                
    string  strXPath;

                objRoles 
    = GetRoles();
                
    if ( Context.Request.IsAuthenticated )
                
    {
                    strUserName 
    = Context.User.Identity.Name;
                    strXPath 
    = string.Format( "user[@name='{0}']", strUserName );
                    objNode 
    = objRoles.DocumentElement.SelectSingleNode( strXPath );
                    
    if (objNode != null)
                    
    {
                        
    string[] arrRoles = objNode.Attributes["roles"].Value.Split (new char[] {','}); 
                               // 这很重要返回为  string[] 类型,要保证被分割.......
        
                 

                           
                        
    foreach(string s in arrRoles)
                        
    {
                            
    this.Response .Write (s+ arrRoles.Length .ToString ());
                        }

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

                }

            }



            XmlDocument GetRoles() 
            
    {
                XmlDocument objRoles;

                objRoles 
    = (XmlDocument)Context.Cache[ "Roles" ];
                
    if ( objRoles == null )
                
    {
                    objRoles 
    = new XmlDocument();
                    objRoles.Load( Server.MapPath( 
    "Roles.xml" ) );
                    Context.Cache.Insert( 
    "Roles", objRoles,  new CacheDependency( Server.MapPath( "Roles.xml" ) ) );
                }

                
    return objRoles;
            }


    Default.aspx

    if ( User.IsInRole( "Sales" ) )
                
    {
                    Response.Write( 
    "You have Sales permissions!" );
                
    //    User.Identity .AuthenticationType.ToString ();

                }
     
               
    if (User.IsInRole ("Supervisor"))
                
    {
                    Response.Write( 
    "You have supervisor   permissions!" );
                    
                }



  • 相关阅读:
    net8:XML的读写操作【广告控件的XML文件实例】
    挺喜欢这个网站的
    问的问题的答案~
    zookeeper集群搭建
    solrCloud简介
    e3商城_day07
    solrj实现增删查
    solr后台管理界面-数据导入
    solr后台管理界面-增删改
    s5p6818 从SD卡启动程序(制作SD启动卡)
  • 原文地址:https://www.cnblogs.com/gwazy/p/158242.html
Copyright © 2011-2022 走看看