基於角色的身分識別驗證

來源:互聯網
上載者:User
   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!" );
                
            }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.