UMLÈí¼þ¹¤³Ì×éÖ¯

ASP.NET °²È«ÈÏÖ¤

 

2008-02-21 ×÷Õß:º®Óð·ã(cityhunter172) À´Ô´:csdn

 


Ðò

´úÂëд N ¾ÃÁË£¬×ÜÏëдµÃ±ðµÄ¡£Õâ²»£¬ÉÏͷ˵ÔÚÕûºÏÁ½¸öÏîÄ¿£¬×ö³Éµ¥Ò»µÇ¼£¨Single Sign On£©£¬Ò²ÓÐÈ˳Æ֮Ϊ¡°µ¥µãµÇ¼¡±¡£²éÔÄÏà¹ØÎĵµºó£¬ÖÕÓÚʵÏÖÁË£¬ÏÖÔÚ°ÑËüÄóöÀ´Óë´ó¼ÒÒ»Æð·ÖÏí¡£»òÐí´ó¼Ò»áÎÊ£º¡°ÕâÓë±êÌâ²»·ûѽ£¿¡±±ð¼±£¬ÔÚϱÊ֮ǰ£¬ÎÒÄÔ×ÓÀïÏëµ½ÁËÎÒ¸ÕʹÓà Form ÈÏ֤ʱÓöµ½µÄһЩÎÊÌ⣬ÒÔ¼°Ê¹Óùý³ÌÓõ½µÄһЩ¼¼ÇÉ£¨ÊµÄËͶ»úÈ¡ÇÉÊÇÒ² ^_^ £©¡£Å¼´ò³õÖÐÄÇʱ£¬ÓïÎÄˮƽ¾Í²»ÔõôµÎ£¬¿¼ÊÔ³£³£×÷ÎÄд²»³öÀ´£¬ËùÒÔд×÷ˮƽÓÐÏÞ£¬»¹Çë´ó¼Òº£Á¿¡£¶ÔÁË£¬±¾È˲»½öд×÷ˮƽÓÐÏÞ£¬±à³ÌÄÜÁ¦Ò²²»ÊǺܺ㬴ËÎĹ©´ó¼Òѧϰ½»Á÷Ö®Ó㬻¶Ó­¹ã´óÀÍ¿àȺÖÚÁà׿¦µ°¡¢Åõ×ÅÏÊ»¨Ç°À´ÆÀÂÛ¡£×ªÔØÇë×¢Ã÷Ô­´´×÷ÕßÄ˺®Óð·ãÊÇÒ²£¬²»Éõ¸Ð¼¤£¡

·Ï»°Ò²ËµµÄ²î²»¶àÁË£¬ÑÔ¹éÕý´«£¬ ASP.NET µÄ°²È«ÈÏÖ¤£¬¹²ÓС°Windows¡±¡°Form¡±¡°Passport¡±¡°None¡±ËÄÖÖÑé֤ģʽ¡£¡°Windows¡±Óë¡°None¡±Ã»ÓÐÆðµ½±£»¤µÄ×÷Ó㬲»ÍƼöʹÓ㻡°Passport¡±ÎÒÓÖûÓùý£¬°¦¡­¡­ËùÒÔÎÒÖ»ºÃ½²½²¡°Form¡±ÈÏÖ¤ÁË¡£ÎÒ´òËã·ÖÈý²¿·Ö£º

µÚÒ»²¿·Ö ¡ª¡ª ÔõÑùʵÏÖFrom ÈÏÖ¤£»

µÚ¶þ²¿·Ö ¡ª¡ª Form ÈÏÖ¤µÄʵսÔËÓã»

µÚÈý²¿·Ö ¡ª¡ª ʵÏÖµ¥µãµÇ¼£¨Single Sign On£©

µÚÒ»²¿·Ö ¡ª¡ª ÔõÑùʵÏÖFrom ÈÏÖ¤£»

Ò»¡¢ н¨Ò»¸ö²âÊÔÏîÄ¿

ΪÁ˸üºÃ˵Ã÷£¬ÓбØҪн¨Ò»¸ö²âÊÔÏîÄ¿£¨ÔÝÇÒΪ¡°FormTest¡±°É£©£¬°üº¬ÈýÕÅÒ³Ãæ×ãÒÓ£¨Default.aspx¡¢Login.aspx¡¢UserInfo.aspx£©¡£É¶£¿ÓÐÈ˲»»áн¨ÏîÄ¿£¬²»»áÐÂÔöÒ³Ã棿ÄãÎÊÎÒÕ¦°ì£¿ÎÒ¿´Õâô°ìºÃÁË£ºÍϳöÈ¥£¬´ò»ØÔ­½å£¬´ÓÓ׶ù԰ѧÆð¡­¡­

¶þ¡¢ ÐÞ¸Ä Web.config

1¡¢ Ë«»÷ÏîÄ¿ÖеÄWeb.config£¨²»»áµÄ¡¢ÕÒ²»µ½µÄ´ò PP£©

2¡¢ ÕÒµ½ÏÂÁÐÎÄ×Ö <authentication mode="Windows" /> °ÑËü¸Ä³É£º

<authentication mode="Forms">

<forms loginUrl="Login.aspx" name=".ASPXAUTH"></forms>

</authentication>

3¡¢ ÕÒµ½<authorization> <allow users="*" /></authorization>»»³É

<authorization><deny users="?"></deny></authorization>

ÕâÀïûʲôºÃ˵µÄ£¬Ö»Òª¿½±´¹ýÈ¥¾ÍÐС£Ëä˵Èç´Ë£¬µ«»¹ÊÇÓÐÈË»áŪ´í£¬ÈçÏ£º

<authentication mode="Forms">

 <forms loginUrl="Login.aspx" name=".APSX"></forms>

<deny users="?"></deny>

 </authentication>

ÈôÒªÎÊÊÇË­°Ñ <deny users="?"></deny> ·ÅÈë <authentication> Öеģ¬ÎÒ»áºÜÈÙÐҵظæËßÄ㣬ÄÇÊÇ N ÄêÇ°µÄÎÒ£º<authentication> Óë <authorization> ¶¼ÊÇÒÔ auth ×Öĸ¿ªÍ·ÓÖ¶¼ÊÇÒÔ ation ½á⣬ºÎÆäÏàËÆ£»Ó¢Îĵ¥´Ê±³²»ÏÂÀ´µÄÎÒÒÔΪËûÃÇÊÇÒ»»ïµÄ¡­¡­

Èý¡¢ ±àд .cs ´úÂ롪¡ªµÇ¼ÓëÍ˳ö

1¡¢ µÇ¼´úÂ룺

a¡¢ Êé±¾ÉϽéÉܵÄ

    private void Btn_Login_Click(object sender, System.EventArgs e)

       {

          if(this.Txt_UserName.Text=="Admin" && this.Txt_Password.Text=="123456")

           {

  System.Web.Security.FormsAuthentication.RedirectFromLoginPage(this.Txt_UserName.Text,false);

  }

       }

b¡¢ żÕÒÁË N ¾Ã²ÅÕÒµ½µÄ

private void Btn_Login_Click(object sender, System.EventArgs e)

         {

              if(this.Txt_UserName.Text=="Admin" && this.Txt_Password.Text=="123456")

              {

System.Web.Security.FormsAuthentication.SetAuthCookie(this.Txt_UserName.Text,false);

     Response.Redirect("Default.aspx");

     }

}

ÒÔÉÏÁ½ÖÖ¶¼¿É·¢·ÅÑéÖ¤ºóµÄ Cookie £¬¼´Í¨¹ýÑéÖ¤£¬Çø±ð£º

·½·¨ a) Ö¸ÑéÖ¤ºó·µ»ØÇëÇóÒ³Ã棬Ë׳ơ°´ÓÄÄÀ´¾Í´òÄÄÈ¥¡±¡£±ÈÈ磺Óû§Ã»µÇ¼ǰֱ½ÓÔÚ IE µØÖ·À¸ÊäÈë http://localhost/FormTest/UserInfo.aspx £¬ÄÇô¸ÃÓû§½«¿´µ½µÄÊÇ Login.aspx?ReturnUrl=UserInfo.aspx £¬ÊäÈëÓû§ÃûÓëÃÜÂëµÇ¼³É¹¦ºó£¬ÏµÍ³½«¸ù¾Ý¡°ReturnUrl¡±µÄÖµ£¬·µ»ØÏàÓ¦µÄÒ³Ãæ

·½·¨ b) ÔòÊÇ·ÖÁ½²½×ߣºÍ¨¹ýÑéÖ¤ºó¾ÍÖ±½Ó·¢·Å Cookie £¬ÌøתҳÃ潫ÓɳÌÐòÔ±×ÔÐÐÖ¸¶¨£¬´Ë·½·¨¶àÓÃÓÚ Default.aspx ʹÓÿò¼Ü½á¹¹µÄϵͳ¡£

2¡¢ Í˳ö´úÂ룺

private void Btn_LogOut_Click(object sender, System.EventArgs e)

{

System.Web.Security.FormsAuthentication.SignOut();

}

ËÄ¡¢ ÈçºÎÅжÏÑéÖ¤Óë·ñ¼°»ñÈ¡ÑéÖ¤ºóµÄÓû§ÐÅÏ¢

ÓеÄʱºò£¬ÔÚͬһÕÅÒ³ÃæÐèÒªÅжÏÓû§ÊÇ·ñÒѾ­µÇ¼£¬È»ºóÔÙ³ÊÏÖ²»Í¬µÄ²¼¾Ö¡£ÓÐÈËϲ»¶Óà Session À´Åжϣ¬ÎÒ²»·´¶Ô´ËÀà×ö·¨£¬ÔÚ´ËÎÒÖ»ÊÇÏë¸æËß´ó¼Ò»¹ÓÐÒ»ÖÖ·½·¨£¬ÇÒ¿´ÏÂÃæ´úÂ룺

if(User.Identity.IsAuthenticated)

         {

              //ÄãÒÑͨ¹ýÑéÖ¤£¬ÖªµÀ¸ÃÔõô×öÁË°É£¿

}

µÚ¶þ²¿·Ö Form ÈÏÖ¤µÄʵսÔËÓÃ

»°ËµÉϻأ¬¼òµ¥µØ˵ÁËһϠForm ±íµ¥ÈÏÖ¤µÄÓ÷¨¡£»òÐí´ó¼Ò¾õµÃÌ«¼òµ¥£¬¶ÔÄÇЩ´óÄÚ¸ßÊÖÀ´ËµÓ¦¸ÃÊÇ¡°È÷È÷Ë®À²¡±¡°Ð¡ Kiss À²£¨Ð¡Òâ˼£©¡±¡£½ñÌìÔÛÃÇÀ´µãµÄ»¨Ñù°É£º¹ÅÓÐÁùÉÈÃÅ£¬¾ÜÊÕÒ¶¹Â³Ç£»¶«ÃŲ»¹Î·ç£¬´µÑ©ÐÕÎ÷ÃÅ£»¶Ð´ø×÷ƾ֤£¬¾öÕ½×Ͻû³Ç¡£

Îå¡¢ Web.config µÄ×÷Ó÷¶Î§

н¨ÏîĿʱ£¬ VS.Net »áÔÚÏîÄ¿¸ùĿ¼½¨Á¢Ò»¸öÄÚÈݹ̶¨µÄ Web.config¡£³ýÁËÔÚÏîÄ¿¸ùĿ¼£¬Ä㻹¿ÉÒÔÔÚÈÎһĿ¼Ï½¨Á¢ Web.config £¬Ìõ¼þ¾ÍÊÇÓ¦ÓóÌÐò¼¶±ðµÄ½ÚµãÖ»ÄÜÔÚ¸ùĿ¼µÄ Web.config ÖгöÏÖ¡£ÖÁÓÚÄÄЩÊÇÓ¦ÓóÌÐò¼¶±ð½ÚµãÄØ£¬Õâ¸öÎÊÌâÂÆäʵÎÒÒ²²»Ì«Çå³þ£¬ºÇºÇ¡£µçÄÔ²»ÊÇÎÒ·¢Ã÷µÄ£¬Î¢Èí²»ÊÇÎÒ´´½¨µÄ£¬C# ¸ü²»ÊÇÎÒ˵ÁËËãµÄ£¬ÉñÏÉÒ²Óв»ÖªµÀµÄ£¬ËùÒÔÎÒ²»ÏþµÃÊÇÕý³£µÄ¡£»°ËäÈç´Ë£¬Ö»ÒªËü²»±¨´í£¬ÄǾÍÊǶԵġ£

¹ØÓÚ Web.config ÉèÖõÄ×÷Ó÷¶Î§£¬¼ÇסÒÔÏÂÁ½µã£º

1¡¢ Web.config µÄÉèÖý«×÷ÓÃÓÚËùÔÚĿ¼µÄËùÓÐÎļþ¼°Æä×ÓĿ¼ÏµÄËùÓ櫶«£¨¼Ì³Ð£º×ÓË游ÐÕ£©

2¡¢ ×ÓĿ¼Ï嵀 Web.config ÉèÖý«¸²¸ÇÓɸ¸Ä¿Â¼¼Ì³ÐÏÂÀ´µÄÉèÖ㨸²¸Ç£ºÏعٲ»ÈçÏֹܣ©

¸ø´ó¼ÒÌá¸öÎÊÌ⣺ÓÐûÓбȸùĿ¼Web.config µÄ×÷Ó÷¶Î§»¹´óµÄÅäÖÃÎļþÄØ£¿¿´ÍêµÚÈý²¿·Ö±ãÖª·ÖÏþ¡£

Áù¡¢ ѧ»á¾Ü¾øÓëÇÉÓÃÔÊÐí

»Øµ½ÎÒÃÇÔÚµÚÒ»»ØºÏн¨µÄ²âÊÔÏîÄ¿¡°FormTest¡± £¬ ¼ÈȻҪ½øÐÐÑéÖ¤£¬°´¹ú¼Ê¹ßÀý£¬¾ÍµÃÓÐÓû§ÃûÓëÃÜÂë¡£ÄÇ£¬ÕâЩÓû§ÊǹÜÀíÔ±×Ô¼ºÔÚÊý¾Ý¿â½¨ºÃÄØ£¬»¹ÊÇÓû§×¢²á¡¢¹ÜÀíÔ±ÉóºËºÃÄØ¡£Ö»Òª²»ÊÇÒ»°ãµÄ±¿µ°£¬¶¼ÖªµÀ Ñ¡ÔñºóÕß¡£ÄãÃÇ»¹±ð˵£¬ÎÒ¹«Ë¾»¹ÕæÓиö±ðÏîÄ¿ÊǹÜÀíÔ±Á¬µ½Êý¾Ý¿âÈ¥½¨Õʺŵģ¬ÊôÓڱȽÏÌØÊâµÄ±¿µ°£¬ÔÛÃDz»Ñ§ËûÒ²°Õ£¬»¹ÊÇÀÏÀÏʵʵÌí¼ÓÁ½¸öÒ³Ãæ°É¡ª¡ª×¢²áÒ³ Ã棨Register.aspx£©ÓëÉóºËÒ³Ã棨Auditing.aspx£©¡£

ÎÊÌâÖÕÓÚ¾ÍÒª¸¡³öË®ÃæÀ²£¬µ±Äã×öºÃ Register.aspx ʱ£¬Ïë·ÃÎÊËüµÄʱºòͻȻ¾õµÃ²»¶Ô¾¢£¬ÔõôÓֻص½Á˵ǼҳÃ棿Äã×ÐϸÇÆÇÆÍøÖ·£¬ÊDz»ÊdzÉÁË£ºLogin.aspx?ReturnUrl=Register.aspx ¡£Ôõô°ì£¬Óû§¾ÍÊÇÒòΪûÓÐÕʺŲÅÈ¥·ÃÎÊ×¢²áÒ³ÃæµÄѽ£¿£¨Õâ¾ä´¿Êô·Ï»°£¬ÓÐÕʺÅË­»¹ÅÜÈ¥×¢²á¡££©ÎÒʱ³£¶ÔÎÒµÄͬÊÂ˵£º¡°°ì·¨ÊÇÈËÏë³öÀ´µÎ£¡£¡¡±

1¡¢ н¨Ò»¸öĿ¼ Public £¬ÓÃÓÚ´æ·ÅһЩ¹«ÓõÄÎļþ£¬ÈçÍòÄêÀú¡¢½Å±¾Ñ½¡­¡­

2¡¢ ÔÚ¡°½â¾ö·½°¸×ÊÔ´¹ÜÀíÆ÷¡±ÖÐÓÒ»÷µã»÷Ŀ¼ Public £¬ÐÂÔöÒ»¸ö Web.config

3¡¢ °ÑÉÏÊö Web.config µÄÄÚÈÝͳͳɾ³ý£¬½öÁôÒÔϼ´¿É£º

<?xml version="1.0" encoding="utf-8"?>

<configuration>

  <system.web>

   <authorization><allow users="*"/></authorization>

 </system.web>

</configuration>

ÖÕÓÚÇÐÈëÕýÌâÁË£¬²»ÈÝÒ×ѽ¡£¸ù¾Ý¡°¸²¸Ç¡±Ô­Ôò£¬ÎÒÃÇÖªµÀÉÏÊö Web.config ½«Ìæ´ú¸ùĿ¼ Web.config ÖÐµÄ <authorization> ½ÚµãÉèÖ㬼´£º

<allow users="*"/> Ìæ»» <deny users="?"></deny>

×¢½â£º¡°allow¡±ÔÊÐíµÄÒâ˼£»¡°*¡±±íʾËùÓÐÓû§£»

¡°deny¡± ¾Ü¾øµÄÒâ˼£»¡°?¡±±íʾÄäÃûÓû§£»

Òò´Ë£¬´¦ÓÚ Public Ŀ¼ÏµÄÎļþ£¬ÔÊÐíËùÓÐÈËä¯ÀÀ£¬°üÀ¨Î´ÑéÖ¤µÄÓû§¡£°Ñ Register.aspx ÍϽøÀ´°É£¬ÔÙÒ²²»»áÓÐÈË×èÖ¹Äãä¯ÀÀÀ²¡£

³ýÁË×¢²áÒ³Ã棬ÎÒÃÇ»¹Ìáµ½Ò»¸öÉóºËÒ³Ã棨Auditing.aspx£©£¬ÉóºËȨÏÞÒ»°ã¶¼ÔÚ¹ÜÀíÔ±»òÖ÷¹ÜÊÖÀ²¢²»ÏëÈÃÆäËûÈËä¯ÀÀ´ËÒ³Ã棨ÕæÀíÍùÍùÕÆÎÕÔÚÉÙÊýÈ˵ÄÊÖÀÕâÒ²ÊÇû·¨×ÓµÄÊ£©£¬Ôõô°ì£¿¡°°ì·¨ÊÇÈËÏë³öÀ´µÎ¡±ºÇºÇ¡­¡­Ð½¨Ò»¸ö¹ÜÀíÔ±µÄĿ¼ ManageSys £¬ÔÚ´ËĿ¼ÏÂÔÙÐÂÔöÒ»¸ö Web.config¡£ÄÚÈÝÈçÏ£º

<?xml version="1.0" encoding="utf-8"?>

<configuration>

<system.web>

<authorization>

<allow users="Admin"/>

<deny users="*"/>

</authorization>

  </system.web>

</configuration>

ÏÖÔÚµÄÎÊÌâ¾ÍÊÇÔõô²ÅÄÜÖªµÀË­ÊÇ¡°Admin¡±ÄØ£¬Õâ¸öÎÊÌâ¾ÍÓеãÏó¡°ÎÒµÄЬµ×Óиö¶´¡±¡ª¡ª Ìì²»ÖªµØÖª£¬Äã²»ÖªÎÒÖª¡£Ïл°ÉÙ˵£¨ÒªÊÇÓиå·Ñ¶àºÃ£¬ÎÒ¾ÍÓжàд¼¸¸ö×ֵĶ¯Á¦£¬°¦¡­¡­£©£¬´ó¼Ò»¹¼ÇµÃÎÒÔÚµÚÒ»²¿·ÖµÄ½áβÂð£¿Ê²Ã´£¬ÍüÀ²£¡·£Äã»ØÈ¥¿´Ò»°Ù±é£¬¼ÇסÁËÔÙ»ØÀ´¡£Õ¾×¡£¬»ØÀ´£¡Ò»Ïëµ½ÄãµÄ¼ÇÐÔ£¬ÎҾͲ»·ÅÐÄ£¬µÚÒ»²¿·ÖµÄä¯ÀÀÍøÖ·ÊÇhttp://blog.csdn.net/cityhunter172/archive/2005/11/06/524043.aspx £¬»Øµ½´Ë´¦µÄÍøÖ·ÊÇhttp://blog.csdn.net/cityhunter172/archive/2005/11/13/528463.aspx

ºÃÁË£¬²»¹ÜÄÇЩ¼Ç²»ºÃµÄ¼Ò»ïÁË£¬´ó»ï¼ÌÐøÍùÏ¿´¡£

System.Web.Security.FormsAuthentication.SetAuthCookie(this.Txt_UserName.Text,false); //ͨ¹ýÑéÖ¤£¬·¢·Å Cookie

֮ǰÎÒÔøÇ¿µ÷£¬Òª×¢Ò⣬µÚÒ»¸ö²ÎÊýºÜÖØÒª£¬ÖØÒªµ½Ê²Ã´³Ì¶È£¿Ëµµ½Õ⣬¿ÖŵØÇòÈ˶¼ÖªµÀÁË¡ª¡ªËü¾ÍÊÇallowÓëdenyµÄÒÀ¾Ý¡£¼ÙÈç´Ë´¦Óû§ÌîдµÄÊÇ¡°Admin¡±¼´ this.Txt_UserName.Text = "Admin"; ÄÇô½øÈëϵͳºó£¬Ëû¾ÍÄÜ·ÃÎÊ ManageSys Ŀ¼ÏµÄÍøÒ³ÁË£¬ÆäËüÏÐÔÓÈ˵ÈÒ»ÂɾÜÖ®ÃÅÍâ¡£

Ϊ¹®¹ÌÉÏÊöÄÚÈÝ£¬¸ø´ó»ïÁô¸ö¿ÎÍâ×÷Òµ£º´ËÏîÄ¿ÓÐÁ½²¿ÃÅʹÓã¬ÆäÖÐÿ¸ö²¿ÃÅ·Ö±ð¶¼ÓÐЩÌض¨µÄÒ³Ãæ½ö¹©±¾²¿ÃÅÓû§ä¯ÀÀʹÓã¬ÇëÎʸÃÈçºÎʹÓà Web.config ´ïµ½Ð§¹û£¿Í¬Ñù£¬´ð°¸ÔÚµÚÈý²¿·Ö½ÒÏþ

Æß¡¢ ·ÖÉ¢Ó뼯ÖÐ

Õ§¿´Ö®Ï£¬¾ÍÏóÊÇÂí¿Ë˼ÁÐÄþÖ÷Ò塢ëÔó¶«Ë¼Ïë¡¢µËСƽÀíÂÛÖеıçÖ¤¹Øϵ£¬´ó»ï·ÅÐÄ£¬Å¼ÊÇѧÀí¿ÆµÄ£¬Ö»Ã÷°×¡°¸ß¾Ù³ÌÐòÔ±µÄΰ´óÆìÖÄ£¬ÒÔ±àд´úÂëΪÖÐÐÄ¡±¡£Í£¡­¡­

µ½Ä¿Ç°Îª´Ë£¬ÎÒÃǵIJâÊÔÏîÄ¿¡°FormTest¡±ÒѾ­ÓµÓÐÁ½¸öĿ¼Èý¸ö Web.config £¬°éËæÓû§ÐèÇóµÄ¶àÑù»¯£¬Web.config Ò²»áÔ½À´Ô½¶à£¬±ÈÈç³£ÓõÄÎļþÉÏ´«¹¦Äܵȵȡ£ÖÚ¶àµÄ Web.config ·Ö²¼ÔÚ²»Í¬µÄĿ¼ÀïÃ棬ά»¤ÆðÀ´¿Ï¶¨±È½Ï·³ÈË¡£Äܲ»Äܼ¯ÖÐÆðÀ´¹ÜÀíÄØ£¬Ó¦¸ÃÕ¦°ìÁ¨£¿¡°°ì·¨ÊÇ¡­¡­¡±Ó´£¬ÓÐÈËÏÈ˵³öÀ´À²¡£²»´í£¬¡°°ì·¨µÄÈ·ÊÇÈËÏë³öÀ´µÎ¡± £¬ÎÒ²»Ëµ£¬ÄãÊDz»ÊÇÖ»ÓÐÔÚÒ»±ßÁ¹°é£¿¿ªÍæЦµÄ£¬ÎªÁËÈøü¶àµÄÈ˼ÇסÕâ¾ä»°£¬ÎÒ´òËã¸æËßÄ㼯ÖйÜÀíµÄ°ì·¨¡£

ÒªÏ뼯ÖйÜÀí£¬²»µÃ²»Óõ½ <location> ½ÚµãÓë path ÊôÐÔ¡£ÔÚ±¾ÏîÄ¿ÖУ¬ÎÒÃǽ«Ä¿Â¼ Public Óë ManageSys ϵÄÉèÖ÷ÅÔÚ¸ùĿ¼Ï嵀 Web.config ÀïÃ棬ÈçÏ£º

<?xml version="1.0" encoding="utf-8"?>

<configuration>

<location path ="Public">

            <system.web>

                <authorization>

<allow users="*"/>

</authorization>

            </system.web>

       </location>

<location path ="ManageSys">

            <system.web>

       <authorization>

<allow users="Admin"/>

<deny users="*"/>

</authorization>

            </system.web>

       </location>

       <system.web>

¡¡

                   <!-- ÕâÀï·ÅÖÃÔ­À´¸ùĿ¼ Web.config µÄÄÚÈÝ£¬¾Í²»ÁгöÀ´ÁË -->

¡¡

       </system.web>

</configuration>

ÐèÒªÌáÐѵÄÊÇ

1¡¢ <location> ½ÚµãµÄλÖÃÊÇÔÚ <configuration> µÄÒ»¸ö×ӽڵ㣬ËüÓëÔ­ÓÐµÄ <system.web> ÊôÓÚ²¢ÁйØϵ

2¡¢ <location> ½ÚµãÖ»ÐèÒª·ÅÈë¶ÔÓ¦×ÓĿ¼ Web.config ÖÐµÄ <system.web> µÄ½ÚµãÄÚÈÝ

°Ë¡¢ ¶îÍâµÄ±£»¤

µÚ¶þ²¿·Ö¾ÍÒª½áÊøÁË£¬ÏÖÔÚʱ¼äÒÑÊÇÁ賿 4 µã50·Ö£¬ÎÒÈÝÒ×ÂïÎÒ¡£ÈÏÖ¤µÄÄ¿µÄ¾ÍÊÇΪÁË·ÀÖ¹ËûÈË·Ç·¨ä¯ÀÀÒ³Ã棬»òδ¾­Ðí¿ÉʹÓÃijЩ¹¦ÄÜ¡£µ±È»£¬ÊÀÉÏûÓоø¶ÔµÄ°²È«£¬Èç½ñ MD5 ¼ÓÃܶ¼±»ÎÒÃǹúÈ˸øÆƽâÁË£¬¾ÍÊÇ×îºÃµÄÀýÖ¤¡£

ϸÐĵÄÈË¿ÉÄÜÔç¾Í·¢ÏÖ ASP.NET µÄ°²È«ÈÏÖ¤Ö»Õë¶Ô .aspx¡¢.ascx ¡­¡­ µÈ ASP.NET ÎļþÆð×÷Ó㬶ø¶ÔÆÕͨҳÃæÓëÎļþÈ´¡°ÊÓ¶ø²»¼û¡±£¬Èç .htm¡¢.js ¡¢.jpg µÈ¡£Í¨¹ýÒÔϲ½ÖèÄã¾Í¿ÉÒÔ±£»¤ÄãÏë±£»¤µÄÎļþÀàÐÍ¡£

1¡¢  ´ò¿ª Internet ÐÅÏ¢·þÎñ(IIS)¹ÜÀíÆ÷ ¡ú ÓÒ»÷±¾ÏîÄ¿ÐéÄâ ¡ú ÊôÐÔ£¬ÈçÏÂͼ

2¡¢  µã»÷°´Å¥¡°ÅäÖá±£¬³öÏÖÈç϶Ի°¿ò£º

3¡¢  Ë«»÷ .aspx µÄÓ¦ÓóÌÐòÀ©Õ¹ ¡ú ²é¿´¶Ô»°¿òÄÚÈÝ£¬ÈçÏÂͼ£º

4¡¢  ¸´ÖÆ¡°¿ÉÖ´ÐÐÎļþ¡±µÄȫ·¾¶Ãû³Æºó ¡ú µã»÷¡°È¡Ïû¡±·µ»ØÉÏÒ»²ã¶Ô»°¿ò ¡ú µã»÷°´Å¥¡°Ìí¼Ó¡±

5¡¢  Õ³Ìù¸Õ²Å¸´ÖƵÄÄÚÈÝ£¨ÎÒµÄϵͳװÔÚ D ÅÌ£¬ËùÒÔÄÚÈÝΪ D:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/aspnet_isapi.dll £© ¡ú Ìîдºó׺ÃûΪ .htm ¡ú Ìîд¶¯×÷ÏÞÖÆΪ¡°GET,HEAD,POST,DEBUG¡±£¨Îª·½±ãÊ¡ÊÂÄã¿ÉÑ¡È«²¿£©

6¡¢  ×îºóµã»÷¡°È·¶¨¡± ¡ú ÍùÏîÄ¿ÖÐÌí¼Ó HtmlPage1.htm ¡ú ÔÚ IE ä¯ÀÀÆ÷µÄµØÖ·À¸Ö±½ÓÊäÈëhttp://localhost/FormTest/HtmlPage1.htm ¡ú ¹Û¿´²âÊÔЧ¹û

×îºóËÍ´ó¼ÒÒ»¶Î Web.config ÉèÖ㬷¢Íê˯¾õ£¬ÊµÔÚÊÇÀ§µÄ²»ÐÐÁË¡£

<location path ="¾öÕ½×Ͻû³Ç">

            <system.web>

                <authorization>

<allow users="Ò¶¹Â³Ç"/>

<allow users="Î÷ÃÅ´µÑ©"/>

<deny users="*"/>

</authorization>

            </system.web>

       </location>

<location path ="½ðöǵîÎݼ¹">

            <system.web>

       <authorization>

<allow users="Ñüϵ¶Ð´øÖ®ÈË"/>

<deny users="*"/>

</authorization>

            </system.web>

       </location>

µÚÈý²¿·Ö ʵÏÖµ¥µãµÇ¼£¨Single Sign On£©

¡°µÈÁ˺þÃÖÕÓڵȵ½½ñÌ죬дÁ˺þÃÖÕÓھͿìÍê½á£¬µ«ÊÇÍøÓѵķ´Ó¦È´ÈÃÎÒÓÐһЩµÄÉËÐÄ¡£ÅÎÁ˺þÃÖÕÓÚÅε½½ñÌ죬ÈÌÁ˺þÃÖÕÓÚ°Ñ´ËÎÄ׫д£¬ÄÇЩÊÜÀäÂäµÄÎÞÄÎÔç¾ÍÎÞËùν£¬ÀÛÒ²²»ËµÀÛ¡±£¨¸è´Ê¡¶½ñÌì¡·ÐÂÑÝÒ¡£¿´×ÅÈË¼ÒµÄ Blog ÎÄÕµÄÆÀÂÛÊÇÒ»Ìõ½ÓÒ»Ìõ£¬ÔÙÇÆÇÆ×Ô¼º£º¡°ÎÞÈËÎʽòÄÅ£¬Õæ¡­ÎÞ¡­ÄΡ­¡­°¦£¬Ã»ÈËÀíÎÒ£¬»¹ÊǻؼҰɡ£¡±¡°°¥£¬»¹Ã»¿ªÊ¼Ð´£¬Ôõô¾Í×ßÁË£¿»ØÈ¥¸ÉʲôÄØ£¿¡±»Øȥд×÷ҵȥ°¡£¬Éϻؽ»´ýµÄ¿ÎÍâ×÷ÒµÄã×öÁËû£¿£¨×¢£ºhttp://blog.csdn.net/cityhunter172/archive/2005/11/13/528463.aspx ÔÚµÚ¶þ²¿·ÖµÚÁù½Ú²¼ÖõĿÎÍâ×÷Òµ£º´ËÏîÄ¿ÓÐÁ½²¿ÃÅʹÓã¬ÆäÖÐÿ¸ö²¿ÃÅ·Ö±ð¶¼ÓÐЩÌض¨µÄÒ³Ãæ½ö¹©±¾²¿ÃÅÓû§ä¯ÀÀʹÓã¬ÇëÎʸÃÈçºÎʹÓà Web.config ´ïµ½Ð§¹û£¿£©

²»ÖªÓжàÉÙÈË×öÁË×÷Òµ£¬Æäʵ´ð°¸²¢²»ÄÑ¡£Ö»ÐèÒªÔÚÑéÖ¤Óû§ÃûÓëÃÜÂëºó£¬È¡µÃ¸ÃÓû§µÄ²¿ÃÅÃû³Æ»ò²¿ÃÅ´úÂ룬°ÑËü×÷ΪÅжϵÄÒÀ¾Ý¾ÍÐÐÁË¡£×îºÃ²»ÒªÓò¿ÃŵÄÊý×ÖID£¬ÄÇÑù²»ÀûÓÚÒÔºóµÄά»¤¡£

ÓÐÒ»¸öÃØÃÜ£¬Ò»°ãÈËÎÒ²»¸æËßËû¡£Web.config ÖÐµÄ <location> ½ÚµãµÄpath ÊôÐÔ¿ÉÒÔÊÇÒ»ÕžßÌåÒ³ÃæµÄÏà¶Ô URL ·¾¶£¬ÈçÏ£º<location path ="ManageSys/Auditing.aspx">

ºÃÁË£¬½ÓÏÂÀ´¾ÍÒª½Ò¿ª¡°±È¸ùĿ¼Web.config µÄ×÷Ó÷¶Î§»¹´óµÄÅäÖÃÎļþ¡±Ö®ÃÕÀ²£¬Ëü¾ÍÊDzØÄäÔÚ Windows ϵͳĿ¼Ï£¬Ö§ÅäÕû¸ö .Net Framework ÅäÖõĴ«ËµÖеÄMachine.config £¡£¡ÏÂÃæÇë´ó¼ÒÒÔÈÈÁÒµÄÕÆÉù£¬»¶Ó­ÎÒÃÇÕâλÉñÃØÏÀ¿ÍµÄÉÁÁÁµÇ³¡¡­¡­

¾Å¡¢ Machine.config

Machine.config £¬ÐÔ±ð²»Ï꣬ÄêÁäδ֪£¬¼ÒÍ¥³öÉí£ºXML¡£Éî²ØÓÚ¡°ÔÆÉî²»Öª´¦¡±µÄ²Ù×÷ϵͳĿ¼ÏµÄijijµØ·½£¨×¢£ºC:\WINDOWS¡¾»ò WINNT ¡¿\Microsoft.NET\Framework\v1.1.4322¡¾»ò v1.0.3705 ¡¿\CONFIG£©£¬¿ØÖÆ×Å¡°¸üÉÏÒ»²ãÂ¥¡±µÄ .NET Framework µÄ±¾»úÅäÖ᣽ÓÏÂÀ´¼òÒªµÄ½²½âÒ»ÏÂËüµÄÄÚÈÝ£¬ÒÔ¼°ËüÓë Web.config µÄ¹Øϵ¡£

¾­¹ý¡°ËÉÏÂÎÊͯ×Ó¡±£¬ÎÒÃǺò»ÈÝÒ×ÕÒµ½ÕâλÒþÕߣ¬´ò¿ªÒ»¿´£¬¹Ô¹Ô£¬×ãÓÐ 3700 ¶àÐУ¡£¡¡°½ÐÎÒÔõôÄܲ»Äѹý£¬Å¼Ö»Ïë¿´¿´ÊÇɶ½á¹¹£¬¿ÉÄÚÈÝʵÔÚÊÇÌ«¶àÌ«·±Ëö¡­¡­¡±»¹¼ÇµÃż¾­³£¶ÔͬÊÂ˵µÄÒ»¾ä»°Ã´£º¡°°ì·¨ÊÇÈËÏë³öÀ´µÄ£¡¡±Ëü²»ÊÇÓÐÈýǧÆß°Ù¶àÐÐÂð£¬ÄÇÎÒÃǾͲ»¹ÜÈýÆßÄÜ·ñµÃ³ö¶þʮһÀ²£¬°ÑËü¿½³öÀ´ÏÈ¡£Ëü²»ÊÇ XML ³öÉíÂð£¬ÄÇÔÛÃǾͻ¹ÆäÕýÉí£¬ÖØÐÂÃüÃûΪ¡°machine.xml¡±¡£½Ó×ÅÓà IE ä¯ÀÀÆ÷½«Õâλ¸ÄÍ·»»ÃæµÄÒþÕß´ò¿ª£¬°Ñ½ÚµãÓë×¢ÊÍÒ»Ò»ºÏ£¡£Õâ»ØÄã¿´µ½ÁË°É£¬ÊDz»ÊǺÜÓгɾ͸У¿ÄãÒªÊÇÏëллÎÒ£¬¾ÍÈÃÎÒ¿´µ½ÄãÔÚ´ËÎÄÏÂÃæµÄÆÀÂÛ°É¡£¶à¶àÒæÉÆ£¬ºÇºÇ¡£

Machine.config Óë Web.config ÊÇɶ¹Øϵ£¿Ëĸö×Ö ¡ª¡ª ¸¸×Ó¹Øϵ¡£¼ÇµÃÎÒÔÚµÚ¶þ²¿·ÖµÚÎå½Ú½²½â Web.config ×÷Ó÷¶Î§µÄʱÌáµ½Á½µã ¡ª¡ª ¼Ì³ÐÓ븲¸Ç£¨Ïê¼ûhttp://blog.csdn.net/cityhunter172/archive/2005/11/13/528463.aspx£©£¬ÔÚ´ËҲͬÑùÊÊÓá£

1¡¢ Machine.config ÖеÄÉèÖý«×÷ÓÃÓÚÔËÐÐÔÚ±¾»úµÄËùÓÐÕ¾µã¼°ÆäÐéÄâĿ¼£¬Óöµ½×ÓĿ¼½«Ò»Ö±¼Ì³ÐÏÂÈ¥¡£

2¡¢ Web.config ÖеÄÉèÖý«¸²¸ÇÓÉ Machine.config Öм̳ÐÏÂÀ´µÄ¶ÔÓ¦µÄ½ÚµãÉèÖÃ

˵µ½Õ⣬ÔÙ¸æËß´ó¼ÒÒ»¸öÃØÃÜ ¡ª¡ª ¡°ÊÀÉϱ¾ÎÞÃØÃÜ£¬ÖªµÀµÄÈ˶àÁË£¬±ã³ÉÁ˲»ÊÇÃØÃܵÄÃØÃÜ£¡¡±

a¡¢ Machine.config ÖÐµÄ <system.web> ½ÚµãËùÓÐÄÚÈݶ¼ÄܳöÏÖÔÚÏîÄ¿¸ùĿ¼Ï嵀 Web.config ÖУ¬Ò²¾ÍÊÇ˵ÄÜÔÚ Web.config ÖеÄÄÚÈÝÒѾ­ÔÚ Machine.config ÖÐÒ»Ò»Áгö£»

b¡¢ ÆäÖÐ <system.web> ½ÚµãÏ嵀 <pages> »¹ÄܳöÏÖÔÚÒ³ÃæÉÏ£¬È磺 HTML ÊÓͼÏ£¬ÔÚWebForm1.aspx µÄµÚÒ»ÐмÓÉÏ<pages> µÄ½ÚµãÄÚÈÝvalidateRequest="false" £¨´Ë¾äÒâ˼ÊDz»¶ÔWebForm1.aspxÒ³ÃæÎı¾¿òÊäÈëµÄÖµ£¬ÊÇ·ñ°üº¬ ¡°<¡± ¡°>¡± µÈµÈ¾ßÓÐΣÏÕÐԵĴúÂë½øÐмì²é£¬ÏÂÒ»½Ú½«¾ßÌåÔËÓõ½£©

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="FromTest.WebForm1" validateRequest="false" %>

Ê®¡¢ µ¥µãµÇ¼£¨Single Sign On£©µÄÇ°ÌáÌõ¼þ

֮ǰ˵ÁËÕâô¶à¹ØÓÚ Machine.config µÄÊ£¬¶¼ÊÇΪÁËʵÏÖµ¥µãµÇ¼×÷Æ̵棬ÄǺÎΪµ¥µãµÇ¼£¨Single Sign On£©£¿´Ó×ÖÃæÀí½â¾ÍÊÇÔÚÒ»¸öµØ·½µÇ¼£¬Í¨³£ÔËÓÃÓÚ ASP.NET ·Ö²¼Ê½»·¾³ÖУ¨¿çµ¥¸ö·þÎñÆ÷ÉϵĶà¸öÓ¦ÓóÌÐò»òÔÚÍøÂ糡ÖУ©µÄ Forms Éí·ÝÑéÖ¤¡£´ò¸ö±È·½£¬¾ÍºÃ±ÈÏÖÔÚ Sohu£¨ËѺü£© Óë Chinren£¨ÖйúУÓѼ£© µÄ×ö·¨£¬ÎÒÔÚ Sohu µÇ¼ÒÔºó¾Í²»ÐèÒªÔÚ Chinaren µÇ¼ÁË¡£Ì¨ÍåÓëÏã¸ÛÓÖ°Ñ Single Sign On ³Æ֮Ϊ¡°µ¥Ò»µÇÈ롱¡£

ÒªÏëʵÏִ˹¦ÄÜ£¬Ê×ÒªÌõ¼þÊÇÐèÒªÒ»×éÓÃÓÚ¼ÓÃÜÓëÑéÖ¤¼ÓÃܵÄÃÜÔ¿¡£ËüÃÇλÓÚ Machine.config ÖУ¬ÐÞ¸Ä <system.web> ½ÚµãÏ嵀 <machineKey> ½ÚµãÊôÐÔ£¬ÈçÏ£º

<machineKey firstKey="172" copyrightKey="Cityhunter172" validationKey="AD117F2F286CDCB15A9D1D4535E16DB0248026939**AUTHOR**CITYHUNTER172****WEBSITE**172*MEIBU*COM****MAILTO**
CITYHUNTER172@126*COM*****F2F286CDCB15A9D1D4535E16DB0248026939" secondKey="meibu"
decryptionKey="3C89AE62AD117F2F286CDCB15A9D1D4535E16DB0248026939" validation="SHA1" thirdKey="com" />

1¡¢ validationKey ΪÓÃÓÚÑéÖ¤¼ÓÃÜÊý¾ÝµÄÃÜÔ¿¡£×îС³¤¶ÈΪ 40 ¸ö×Ö·û£¨20 ×Ö½Ú£©£¬×î´ó³¤¶ÈΪ 128 ¸ö×Ö·û£¨64 ×Ö½Ú£©¡£

2¡¢ decryptionKey ΪÓÃÓÚ¼ÓÃÜÊý¾ÝµÄÃÜÔ¿¡£³¤¶ÈÖ»ÓÐ 16 ¸ö×Ö·û£¨8 ×Ö½Ú£©Óë 48 ¸ö×Ö·û£¨24 ×Ö½Ú£©Á½ÖÖ¡£

3¡¢ validation ΪÓÃÊý¾ÝÑé֤ʹÓõļÓÃÜÀàÐÍ¡£ÓµÓС°SHA1¡±¡°MD5¡±¡°3DES¡±ÈýÖÖ·½·¨

4¡¢ ´ó»ï²ÎÕÕÉÏÊö <machineKey> ÊÔ×ÅÔÚWebForm1.aspxÔËÐÐÏÂÁÐÓï¾ä£º

this.TextBox2.Text ="ht"+"tp"+"://"+firstKey+"."+secondKey +"."+thirdKey

´ó¼ÒÔÚÐÞ¸Ä֮ǰÇëÏȱ¸·ÝһϠMachine.config £¬µ½Ê±ÒªÊdzö´í¿É±ð¹ÖÎÒûÌáÐÑÄã¡£ÒÔÉÏÃÜÔ¿²¢²»ÊǺúÂÒµÃÀ´µÄ£¬½ÓÏÂÀ´Ïò´ó¼Ò½éÉÜÉú³ÉÃÜÔ¿µÄ·½·¨¡£

ÎÒÃÇ°ÑÉÏÒ»½ÚÖÐÌáµ½µÄ WebForm1.aspx ÍÏÈë±¾ÏîÄ¿µÄ Public Ŀ¼Ï£¬ÔÙÍùÒ³ÃæÉÏÍÏÈëÒ»¸ö TextMode=MultiLine µÄTextBox3 ÓëÒ»¸ö Button ±àд°´Å¥Ê¼þÓ뺯Êý£º

         private void Button1_Click(object sender, System.EventArgs e)

         {

              string decStr = this.CreateKeyString(int.Parse(this.TextBox1.Text));

              string valStr = this.CreateKeyString(int.Parse(this.TextBox2.Text));

              this.TextBox3.Text=string.Format("<machineKey validationKey=\"{0}\" decryptionKey=\"{1}\" validation=\"SHA1\"/>",valStr,decStr);

     }

         /// <summary>

         /// Éú³É¼ÓÃÜÐÍÇ¿Ëæ»ú Key Öµ

         /// </summary>

         /// <param name="i">Key µÄÓÐЧ³¤¶È£º

         /// decryptionKey µÄÓÐЧֵΪ 8 »ò 24£»

         /// validationKay µÄÓÐЧֵΪ 20 ÖÁ 64

         /// </param>

         private string CreateKeyString(int i)

         {

              System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider();  //¼ÓÃÜËæ»úÊýÉú³ÉÆ÷

              byte[] bt = new byte[i];

              rng.GetBytes(bt);//ÓüÓÃÜÐÍÇ¿Ëæ»úÖµÐòÁÐÌî³ä×Ö½ÚÊý×é

              System.Text.StringBuilder str = new System.Text.StringBuilder();

              for(int j= 0;j<i;j++)

              {

                   str.Append(string.Format("{0:X2}",bt[j])); //ת»»³É´óдµÄÊ®Áù½øÖÆÎı¾

              }

              return str.ToString();

         }

ÿ´Îµã»÷°´Å¥Éú³ÉÃÜÔ¿¶¼²»Í¬£¬´ó¼Ò²»·Á¶àµã¼¸´Î¡£Çл»ÖÁ HTML ÊÓͼ£¬µ½WebForm1.aspx µÚÒ»ÐÐ°Ñ validateRequest="false" È¥µô£¬È»ºóÔÙ¶àµã¼¸´Î Button1ÊÔÊÔ£¬¿´¿´»áÓÐʲôЧ¹û£¬ºÙºÙ¡­¡­¡­

ʮһ¡¢ µ¥µãµÇ¼£¨Single Sign On£©µÄÕ¾µãʾÀý

½«ÉÏÊö TextBox3 ²úÉúµÄÎı¾£¬¸²¸ÇMachine.config Öеģ¬ÏÖÔÚÄãµÄ»úÆ÷ÒѾ­¾ß±¸Á˵¥µãµÇ¼µÄÌõ¼þ¡£´ó»ï¿ÉÒÔÔÙн¨Ò»¸öÏîÄ¿ FormTest2 £¬´Ó FormTest2 µÇ¼ºóÖ±½ÓÊäÈë FormTest ÖеÄDefault.aspx µÄÍøÖ·£¨http://localhost/FormTest/ Default.aspx£©£¬·´Ö®Òà¿É¡£

ÏÂÃæ½áºÏʵÀý½²½â£ºÅ¼ÔÚɽ¶«Ã¿²½¿Æ¼¼ÍøÕ¾ÉêÇëÁËÒ»¸öÃâ·Ñ¶þ¼¶ÓòÃû 172.meibu.com£¬²¢ÏÂÔØÁËÿ²½µÄ 4.0 °æµÄ¶¯Ì¬ÓòÃû½âÎö¿Í»§¶Ë¡£ÏÖÔÚʹÓà ADSL °ÎºÅÉÏÍø£¬Ò²¾ÍÊÇ˵ÎҵĵçÄÔÒѾ­³ÉÁË Web ·þÎñÆ÷£¬Í¬Ê±Ö§³Ö SQL Server ¡¢Oracle ¿Õ¼ä¸ß´ï 200 G ÏëÔõôŪ¾ÍÔõôŪ£¬¹»Å£°É£¬ºÙºÙ¡£²¼ÊðÉÏÀ´µÄÏîÄ¿Óл·Ê¤ÊýÂëÍøÕ¾¡¢È¨ÏÞ¹ÜÀíϵͳ¡¢IT ÄÚ²¿¹ÜÀíÍø£¬ÒÔÉÏÈý¸öÏîÄ¿ÊÇżһÈËȫȨ¿ª·¢µÄ¡£ËùνȫȨ¾ÍÊÇ´ÓÊý¾Ý¿â´æ´¢¹ý³Ìдµ½ .cs ´úÂëÔÙµ½ javascript £¬×îºóµ½ÃÀ¹¤¶¼ÊÇżһÊָ㶨µÄ¡£^_^ ÎÒ°ÑÕâÈý¸ö²»Ïà¸ÉµÄÏîÄ¿×ö³ÉÁ˵¥µãµÇ¼µÄģʽ£¬¼ÓÉÏÕûºÏÕ¾µãµÄÖ÷Ò³Ã棬¹²ÓÐËĸöµØ·½¿ÉÒÔ½øÐеǼ¡£ÒòΪÓû§ Table µÄ½á¹¹²»Í¬£¬Òò´ËÖ»ÓÐÒ»¸öÈë¿ÚÄÜÔÚ½øÈëºó£¬ÔÚÌøתվµãʱ²»»á³ö´í£¬ÄǾÍÊÇÔÚÕûºÏÒ³ÃæµÇ¼¡£

ÏÖÔÚÎÒÏë°Ñ»·Ê¤ÊýÂëÕâ¸öÕ¾µãµ¥¶ÀÍÑÀë³öÀ´£¬¶øʣϵÄÁ½¸öÕ¾µã¼ÌÐøʵÏÖµ¥µãµÇ¼£¬¸ÃÔõô×öÄØ£¿»òÕßÊÇÎÒµÄ ASP.NET µÄ¿Õ¼äÊÇ×âµÄ£¬·þÎñÉ̿϶¨²»¿ÉÄÜÈÃÎÒÐÞ¸Ä Machine.config ,ÎÒÓÖÕ¦°ìÁ¨£¿¡°°ì·¨ÊÇÈËÏë³öÀ´µÎ£¡£¡¡±£¬¸ù¾ÝÉÏÊö Machine.config Óë Web.config µÄ¹Øϵ£¬ÎÒÃÇ¿ÉÒÔ°Ñ <machineKey> ½Úµã·ÅÈëÏîÄ¿¸ùĿ¼ÏÂWeb.configµÄ <system.web> ½Úµã¡£ÈçÏ£º

1¡¢ ȨÏÞ¹ÜÀíϵͳÏîÄ¿µÄ Web.config ÓÃÓÚ Form ÈÏÖ¤µÄÉèÖÃ

<machineKey validationKey="AD117F2F286CDCB15A9D1D4535E16DB0248026939**AUTHOR**CITYHUNTER172****WEBSITE**172*MEIBU*COM****
MAILTO**CITYHUNTER172@126*COM*****F
2F286CDCB15A9D1D4535E16DB0248026939" decryptionKey="3C89AE62AD117F2F286CDCB15A9D1D4535E16DB0248026939" validation="SHA1" />

<authentication mode="Forms">

<forms loginUrl="Login.aspx" name="172.MEIBU.COM_WARRANT"></forms>

</authentication>

<authorization><deny users="?"></deny></authorization>

2¡¢ IT ÄÚ²¿¹ÜÀíÍøÏîÄ¿µÄ Web.config ÓÃÓÚ Form ÈÏÖ¤µÄÉèÖÃ

<machineKey validationKey="AD117F2F286CDCB15A9D1D4535E16DB0248026939**AUTHOR**CITYHUNTER172****WEBSITE**172*MEIBU*COM****
MAILTO**CITYHUNTER172@126*COM*****F2F286CDCB15A9D1D4535E16DB0248026939" decryptionKey="3C89AE62AD117F2F286CDCB15A9D1D4535E16DB0248026939" validation="SHA1" />

<authentication mode="Forms">

<forms loginUrl="Login.aspx" name="172.MEIBU.COM_IT"></forms>

</authentication>

<authorization><deny users="?"></deny></authorization>

´ó¼Ò¿ÉÄÜ»áÆȲ»¼±´ýµÄÈ¥ÊÔÒ»°Ñ£¬Å¼ÔÞ³ÉÕâÑùµÄ×ö·¨£¬ÒòΪÊÂʵÊǼìÑéÕæÀíµÄΨһ°ì·¨¡£Ä㲻ȥÊÔ×Å×Ô¼º¶¯ÊÖ£¬¹â¿´ÎÒÔÚÕâ˵ÊǺÜÄÑÌá¸ßµÄ¡£Ïȱ𼱣¬ÎÒÒѾ­ÖªµÀÄãÏë˵ʲô£¬ÌýÌýÎÒÂýÂýÏòÄã½âÊÍ£º

a) Á½¸öÏîÄ¿Web.cinfigµÄ<machineKey> ½ÚµãÈ·±£ÒÔϼ¸¸ö×Ö¶ÎÍêÈ«Ò»Ñù£ºvalidationKey ¡¢decryptionKey ¡¢validation

b) Á½¸öÏîÄ¿µÄ Cookie Ãû³Æ±ØÐëÏàͬ£¬Ò²¾ÍÊÇ <forms> ÖÐµÄ name ÊôÐÔ£¬ÕâÀïÎÒÃÇ°ÑËüͳһΪ name ="172.MEIBU.COM_PROJECT"

c) ×¢ÒâÇø·Ö´óСд

ÔÚÕûºÏµÄ¹ý³ÌÖУ¬ÎÒ°ÑÓöµ½µÄÎÊÌâÏò´ó»ï˵һÏ£¬ÒÔÃâÄãÃÇ×ßͬÑùµÄ·¡£

1) Ê×ÏÈÓ¦¸ÃÊÇÓû§¹ÜÀíµÄÎÊÌ⣬°ÑÁ½¸öÏîÄ¿µÄÓû§ÕûºÏÔÚÒ»Æ𣬿ɲ»ÊÇÒ»¼þÈÝÒ×µÄÊ£¬Ô­ÔòÊÇн¨Ò»¸öÐ嵀 Table Ö»´æ·ÅÕʺÅÓëÃÜÂ룬ÓÃÕ˺Å×ö¹ØÁª£¬±àд´¥·¢Æ÷£¬×öµ½ Table Ö®¼äµÄͬ²½£»

2) ²»ÒªÖ¸ÍûÁ½¸öÏîÄ¿¼äÓà Session ½øÐд«Öµ£¬Á½¸öÓ¦ÓóÌÐòµÄ Session ÊÇÎÞ·¨¹²ÏíµÄ¡£ÍøÉÏÓÐÈËÔø°ÑÀà¿â£¨±àÒëºóµÄ .dll Îĵµ£©·ÅÈëͬһ¸ö bin Îļþ¼ÐʵÏÖ¹ý Session ¹²Ïí£¬ÕâÑùµÄ×ö·¨Êµ¼ÊÉÏÊÇ°ÑÁ½¸öÏîÄ¿±äÏàºÏ²¢³ÉÒ»¸öÓ¦ÓóÌÐò£¬²»ÊÇÎÒÃÇËùÏëÒªµÄ£¬ÀíÓɺܼòµ¥£ºSohu Óë Chinaren µÄ·þÎñÆ÷·Ö´¦Á½µØ¸ÃÔõô°ì£¿

3) ÏîÄ¿¼äµÄ´«Öµ£¬¿ÉÓà Cookie ʵÏÖ¡£ÔÚµÚÒ»²¿·ÖµÄµÚÈý½Ú£¨http://blog.csdn.net/cityhunter172/archive/2005/11/06/524043.aspx£©ÎÒÃǽéÉÜÁËÖ»ÒªÔËÐÐ System.Web.Security.FormsAuthentication.SetAuthCookie ·½·¨¼´¿ÉʵÏֵǼ£¬µ¥µãµÇ¼µÄʵÖʾÍÊǺ¬ÓÐÉí·ÝÑé֤ƱµÄ Cookie ÄÜÔÚÏîÄ¿¼ä¹²Óá£

½ÓÏÂÀ´£¬ÓбØÒªÏò´ó¼Ò½éÉÜһϠCookie ÔÚ .Net ÖеÄÓ÷¨¡£

Ê®¶þ¡¢ Cookie ÔÚ ASP.NET ÖеÄÓ÷¨

´ó¼ÒÒ²ÐíºÍÎÒÒ»Ñù£¬ºÜÉÙÔÚ ASP.NET ÖÐʹÓà Cookie £¬´«²ÎÊýѽ£¬´æ±äÁ¿Ñ½£¬ÓõıȽ϶àµÄÊÇ Session »ò ViewState ÒÔ¼°Òþ²Ø¿Ø¼þ£¬ÓеĸɴàÓá° ? ¡±µÄÇëÇó·½Ê½¡£

1¡¢ Cookie ´æ·ÅµÄĿ¼

Cookie ÊÇ´æ·ÅÔÚ¿Í»§¶ËµÄ¶«¶«£¬·ÅÔÚ¡°Temporary Internet Files¡±Ä¿Â¼£¬ËùÒÔ˵´æÔÚ°²È«ÐÔµÄÎÊÌâ¡£´ó»ï¿Éͨ¹ýÒÔÏ·½Ê½ÕÒµ½¾ßÌåλÖ㺴ò¿ª¿ØÖÆÃæ°å ¡ú Internet Ñ¡Ïî ¡ú ³£¹æ ¡ú Internet ÁÙʱÎļþ ¡ú ÉèÖà ¡ú ¼´¿É¿´µ½¡°µ±Ç°Î»Öá±£¬¡ú µã»÷¡°²é¿´Îļþ¡±½«Ö±½Ó´ò¿ª¸ÃÎļþ¼Ð£¬ÄãÒ²¿ÉÒÔµã»÷¡°Òƶ¯Îļþ¼Ð¡±±ä¸üËüËùÔÚµÄλÖᣲÎÕÕÏÂͼ

2¡¢ Cookie µÄÓÐЧÆÚ

´ÓÉÏͼÎÒÃÇ¿ÉÒÔÇå³þµÄ¿´µ½Ã¿¸ö Cookie ÎĵµµÄ¡°½ØÖ¹ÆÚ¡±£¨¼´ÎªÓÐЧÆÚ£©¡£ÔÚÓÐЧÆÚÄÚ£¬µ±µÇ¼¼ÆËã»úµÄÓû§ Administrator ÔٴηÃÎÊ 172.meibu.com ʱ£¬ÄÇô IE ¾Í»áÔÚÇëÇóÒ³ÃæµÄͬʱ£¬Á¬Í¬ÉÏÊöµÄÃû³ÆΪ¡°Cookie:administrator@172.meibu.com¡±µÄCookie ÎĵµÄÚÈÝÒ»Æð·¢Ë͸ø·þÎñÆ÷¡£

Èô¸ÃÎĵµ°üº¬¶à¸ö Cookie µÄֵʱ£¬½ØÖ¹ÆÚÔòÒÔ×îºóµÄʧЧÆÚΪ׼¡£

3¡¢ Cookie µÄÀàÐÍ

ÕâÀïÎÒÃÇ°´ÓÐЧÆÚÀ´·Ö£¬·ÖΪÁ½ÖÖ£º

a)¼´Ê±ÐÍ

Ö¸µÄÊǹرÕä¯ÀÀÆ÷£¨ËùÓÐä¯ÀÀ 172.meibu.com µÄ IE£©ºó£¬Cookie ±ãʧЧ£¬´ËÀà Cookie ²»»áÔÚ¡°Temporary Internet Files¡±Ä¿Â¼³öÏÖ¡£ÆäʵËüÒ²ÓнØÖ¹Æڵģ¬Îª¡°0001-01-01¡±

b)³Ö¾ÃÐÍ

¾ÍÊÇÒÑÖ¸¶¨¾ßÌå¡°½ØÖ¹ÆÚ¡±µÄ£¬Äܹ»ÔÚ¡°Temporary Internet Files¡±Ä¿Â¼ÀïÃæÕÒµ½µÄ Cookie

4¡¢ Cookie µÄÄÚÈÝ

Ë«»÷´ò¿ª¡°Cookie:administrator@172.meibu.com¡±£¬ÎÒÃÇ¿´µ½ÒÔÏÂÄÚÈÝ£¬ÈçÏÂͼ£º

ÉÏͼÖУ¬¡°¡ö¡±ÊÇ»»Ðзû£¬ÄãÈôÊÇÒª´òÆÆʲô¹øÀ´ÎÊÎÒµ½µ×ÊÇÔõô֪µÀµÄ»°¡£ÎÒµ¹ÊÇ»áºÜÀÖÒâµÄ¸æËßÄ㣺Õâ¾ÍÊǾ­Ñ飡ż´Óѧϰ C# ÄÇ¿ÌÆ𣬾ÍÄõÚÒ»¸ö Windows ³ÌÐò €€€€ ¼Çʱ¾ À´¿ªµ¶£¬±£´æÎĵµÊ±µÃÀ´µÄ¾­Ñé¡£

ËùÒÔ·þÎñÆ÷¶Á³öÀ´µÄ¸ñʽÈçÏÂͼ£º

5¡¢ ÔÚ ASP.NET Ò³Ãæ·¢·Å Cookie

·¢ËÍÉÏÊö Cookie µÄ .cs ´úÂëΪ£º

System.Web.HttpCookie ck = new HttpCookie("ckValue0");

ck["Author"] ="CityHunter";

ck.Expires = System.DateTime.Now.AddMinutes(10);//Èô²»Ö¸¶¨£¬ÔòΪ¼´Ê±ÐÍ Cookie

//ck.Path="/FormTest/ManageSys"; //ÉèÖà Cookie µÄÐéÄâ·¾¶£¬×¢ÒâÒ»¶¨ÒªÒÔ¡°/¡±¿ªÍ·£¬·ñÔòΪÎÞЧ Cookie £»Çë´ó¼Ò×ÔÐп´Ò»ÏÂËüÓëÔÚ¿Í·¿¶ËµÄ Cookie Îĵµ¡°Ãû³Æ¡±Óë ¡°Internet µØÖ·¡±µÄ¹Øϵ

Response.Cookies.Add(ck); 

ck = new HttpCookie("ckValue1"); //ÖØÐÂн¨Ò»¸öÃûΪ ckValue1 µÄ Cookie

ck.Expires = System.DateTime.Now.AddMinutes(20);   //¼´¿ÌÆð 20 ·ÖÖÓºóʧЧ

ck["E_Mail"] ="cityhunter172@126.com";         //ÉèÖà ckValue1 ÖÐµÄ E_Mail Öµ

ck["PersonalWeb"] ="172.meibu.com";

Response.Cookies.Add(ck);   //Ìí¼Ó´Ë Cookie

6¡¢ È¡»ØÒÑ·¢·Å Cookie µÄÖµ

Response.Write(Request.Cookies["ckValue0"]["Author"]+"<br>");//Óò»×Å˵Ã÷ÁË°É

Response.Write(Request.Cookies["ckValue1"]["E_Mail"]+"<br>");

Response.Write(Request.Cookies["ckValue1"]["PersonalWeb"]);

ºÃ¾ÃûÓгö×÷ÒµÀ²£¨ºÎ³ö´ËÑÔ£¿£©£¬ÕâµÚÈýƪѽ£¬¿ÉÊÇ»¨ÁËżÁ½¸öÐÇÆÚµÄÒµÓàʱ¼äµ÷ÊÔ¡¢×ܽᡢ׫дÄÄ£¬¶¼ËµÊ±¹â¹óÈç½ð£¬²»ÖªÎÒ»¨µÄÕâЩʱ¼äÄÜ»»À´¶àÉÙÒø×Ó£¿»»Òø×Ó£¬ÎÒ¿´ÊÇûָÍûÀ²£¬Äܵõ½¸óϵÄÒ»¾äÆÀÂÛ£¬Å¼Ò²Âú×ãÁË¡£¼Çס£¬ÄãµÄÆÀÂÛ¾ÍÊÇż¼ÌÐøдÏÂÈ¥µÄ¶¯Á¦¡£

×÷Òµ£º¸ø Cookie ¸³ÓÚÒÔÏÂÖµ£¬ÔõÑùµÃµ½ËüµÄÕýÈ·Öµ

ck["str1"] ="2222";

ck["str"] ="str0=11111&str1=223";

¿ÉÒԿ϶¨µÄÊÇRequest.Cookies["ckValue1"]["str"] µÃ²»µ½ ¡°str0=11111&str1=223¡±Õâ¸ö×Ö´®£¬´ó¼Ò²»·ÁÊÔһϠRequest.Cookies["ckValue1"]["str1"] »áµÃµ½ÒâÏë²»µ½µÄ×Ö´®Ó´¡£

Ìáʾ£ºÊ¹Óà Server.UrlEncode()ÓëServer.UrlDecode()

Ê®Èý¡¢ ·¢·ÅÓÀ¾ÃÐÔµÄÑéÖ¤ Cookie

ÖÕÓÚ¡­¡­ÖÕÓÚ¡­¡­×îºóÒ»¸öÕ½ڣ¬ÝëÈ»»ØÊ×£¬ÑóÑóÈ÷È÷Ê®¶þÕ¡£Ã»Ïëµ½ÄêÉÙʱд²»Íê×÷ÎĵÄż£¬¾ÓȻҲÄܱà³ö¼¸Ç§Óà×ÖµÄÎÄÕÂÀ´Ñ½£¬²»µÃ²»Åå·þż×Ô¼ºÑ½£¡ÔÙ»ØÊ×£¬Ò»´óƬÔε¹µÄÈË¡­¡­¡£ÓÀÔ¶µ½µ×ÓжàÔ¶£¿ÓÀ¾Ã¾¿¾¹ÊǶà¾Ã£¿Ö»ÓÐÌìÖªµÀ¡£

´ó¼ÒµÇ¼ CSDNµÄʱºòÊÇ·ñÁôÒâµ½Ò»¸ö¡°2 ÖÜÄÚ²»ÓÃÔٵǼ¡±µÄ¸´Ñ¡¿ò£¬ËüÓÖÊÇÔõô×öµ½µÄÄØ£¿´ó¼ÒÊÇ·ñÔøÓöµ½¹ýÕâÑùµÄÀ§»ó£ºÔÚÖ´ÐÐSystem.Web.Security.FormsAuthentication.SetAuthCookie ʱÃ÷Ã÷ÒÑÖ¸¶¨createPersistentCookie Ϊ true ΪºÎ¹Ø±Õä¯ÀÀÆ÷ÈÔ²»ÄÜÖ±½Ó·ÃÎÊÍøÕ¾£¿ÏÂÃæÎÒÃǾÍÕâ¸öÎÊÌâ¸ø´ó¼Ò½âÊÍһϣ¬ÇÒ½éÉÜÈçºÎÊÖ¹¤´´½¨Éí·ÝÑé֤Ʊ²¢¼ÓÈë Cookie ÖС£

     System.Web.Security.FormsAuthenticationTicket tk = new System.Web.Security.FormsAuthenticationTicket(

         1,                 //Ö¸¶¨°æ±¾ºÅ£º¿ÉËæÒâÖ¸¶¨

"Admin", //µÇ¼Óû§Ãû£º¶ÔÓ¦ Web.config ÖÐ <allow users="Admin" ¡­ /> µÄ users ÊôÐÔ

         System.DateTime.Now,   //·¢²¼Ê±¼ä

         System.DateTime.Now.AddYears(100),   //ʧЧʱ¼ä£º100 ÄêÒԺ󣬹»ÓÀ¹»¾ÃÁË°É

false,   //ÊÇ·ñΪ³Ö¾Ã Cookie£ºÉÐδ·¢ÏÖÓкÎÓã¬ÖÁÉÙĿǰż»¹²»Öª£¬ÏÂÃæ»áÓÐ˵Ã÷

"²âÊÔÓû§Êý¾Ý"//Óû§Êý¾Ý£º¿ÉÓà ((System.Web.Security.FormsIdentity)User.Identity).Ticket.UserData »ñÈ¡

         );

string str = System.Web.Security.FormsAuthentication.Encrypt(tk);//¼ÓÃÜÉí·ÝÑéƱ

             

     //ÉùÃ÷Ò»¸ö Cookie£¬Ãû³ÆΪ Web.config ÖÐ <forms name=".APSX" ¡­ /> µÄ name ÊôÐÔ£¬¶ÔÓ¦µÄֵΪÉí·ÝÑéƱ¼ÓÃܺóµÄ×Ö´®

     System.Web.HttpCookie ck = new HttpCookie(System.Web.Security.FormsAuthentication.FormsCookieName,str);        

             

     //Ö¸¶¨ Cookie Ϊ Web.config ÖÐ <forms path="/" ¡­ /> path ÊôÐÔ£¬²»Ö¸¶¨ÔòĬÈÏΪ¡°/¡±

     ck.Path=System.Web.Security.FormsAuthentication.FormsCookiePath;  

//´Ë¾ä·Ç³£ÖØÒª£¬ÉÙÁ˵Ļ°£¬¾ÍËã´Ë Cookie ÔÚÉí·ÝÑéƱÖÐÖ¸¶¨Îª³Ö¾ÃÐÔ Cookie £¬Ò²Ö»ÊǼ´Ê±Ð굀 Cookie ¹Ø±Õä¯ÀÀÆ÷ºó¾ÍʧЧ£»Òò´ËÉÏÃæÎÒ˵£ºÎÒÊÇÕæµÄ»¹²»ÖªÔÚÉí·ÝÑéƱÖÐÖ¸¶¨Îª³Ö¾ÃÐÔ Cookie ÓкÎÓá£

     ck.Expires = System.DateTime.Now.AddYears(100);

Response.Cookies.Add(ck); //Ìí¼ÓÖÁ¿Í·¿¶Ë 

ºó¼Ç

´ËϵÁÐÎÄÕ¹²Èý²¿·Ö£¬Àúʱһ¸öÔÂÍê³É£¨2005-11-05 ~ 2005-12-06£©¡£ÒÔÉÏÊÇÎÒѧϰ²¢ÓÃÓÚʵ¼ùµÄһЩ¾­Ñ飬ÔÚ´ËÄóöÀ´Óë´ó¼ÒÒ»Æð·ÖÏí¡£´úÂ붼ÊǾ­¹ýµ÷ÊԵģ¬ÈçÓÐÈκÎÒÉÎÊ£¬¿ÉÔÚ CSDN ÂÛ̳£¨http://community.csdn.net/£©ÕÒµ½ÎÒ£¬ÎÒµÄ ID ÊÇ cityhunter172 £¨¿ÉÓÃ´Ë ID ·¢¶ÌÏûÏ¢¸øÎÒ£©£¬êdzÆΪ º®Óð·ã£¬»¶Ó­´ó¼ÒÅúÆÀÖ¸Õý¡£

µÚËIJ¿·Ö Form ÈÏÖ¤µÄ²¹³ä

Ç°ÈýƪÔÚ CSDN ÂÛ̳¹«²¼ºó£¬Ð§¹ûÈçͬ¡°ÉñÏÉ·Åƨ¡ª¡ª¹ûÈ»²»Í¬·²£¨·´£©Ï족¡£Îª¸Ðл¹ã´óÍøÓѵÄÈÈÇéÓëÖ§³Ö£¬Õâ²»£¬¾­¹ýÕâÒ»Õó×ÓµÄÔÍÄð¡¢ÐÞÁ¶£¬ÌØÒâ×¼±¸ÁËÕâµÚËÄÏì¡£

֮ǰÎÒÃǽ²ÊöµÄʹÓà Form ÈÏ֤ʵÏÖµ¥µãµÇ¼£¬ÕýÈçÍøÓÑËù˵µÄÄÇÑù£¬Ö»ÄÜÔÚͬһÓòÃûÏÂʹÓ᣶ÔÓÚ¿çÓòÃûµÄµ¥µãµÇ¼£¬³ýÁËʹÓà Passport ÈÏÖ¤Í⣬ÎÒÃÇ»¹ÊÇ¿ÉÒÔÓà Form ÈÏÖ¤µÄ£¬Ö»ÊÇÒª½²¾¿·½·¨¶øÒÑÀ²¡£ÕýËùν¡°É½²»×ªË®×ª£¬È˲»×ªÐÄת¡±¡£

Ò»¡¢ ¿çÓòÃûµÄ½â¾ö˼·

ÔÚMSDN 2003 ÉÏËÑË÷¹Ø¼ü×Ö¡°Passport¡±£¬Å¼ÕÒµ½Ò»Æª¡°Passport Éí·ÝÑéÖ¤Ìṩ³ÌÐò¡±¡£ÎÄÕ½²ÊöÁË Passport µÄÈÏÖ¤Ô­Àí£¬¹² 8 Ìõ£¬ÎҾͲ»¶à˵ÁË£¬´ó»ï×Ô¸ö¿´°É¡£ÆäÖÐÓÐÒ»¾ä»°£¬ÒýÆðżµÄ×¢Ò⣺¡°¡­¡­ÏìÓ¦ÔÚ²éѯ×Ö·û´®Öаüº¬Ò»¸ö¼ÓÃÜµÄ Passport Cookie¡­¡­¡±¡£Ò²ÕýÊǴ˾ä²ÅÓÐÁËÏÂÃæµÄ˼·¡£

ËùνÈÏÖ¤µÄͨ¹ýÓë·ñ£¬ÆäʵÖʾÍÊǼì²âÓÐÎÞ·¢·ÅÓÐЧµÄ Cookie £¬Ê¹Óà Form Ò²ºÃ£¬ÔËÓà Passport Ò²°Õ£¬¶¼ÊÇ Cookie ÔÚÆð×÷Óá£Ò²¾ÍÊÇ˵£¬ÎÒÃÇÖ»Òª°ÑÓÐЧµÄ Cookie ÔڵǼºóÒ»´ÎÐÔ·¢·Å¸ø¿Í»§¶Ë¾ÍµÃÁË¡£

¶þ¡¢ ¿çÓòÃû¡¢¿ç·þÎñÆ÷µÄµ¥µãµÇ¼·½·¨

1¡¢ ÈçºÎÔÚ±¾»úÄ£Äâ¿çÓòÃû¡¢¿ç·þÎñÆ÷µÄSingle Sign On

Ö»Òªä¯ÀÀÍøÖ·²»Í¬¾ÍÏ൱ÓÚ²»Í¬ÓòÃû£¬ÔÚ±¾»úÖÁÉÙÓÐÒÔÏÂÈýÖÖ¡£ËüÃÇËäÈ»ÊÇͬһÏîÄ¿£¬±Ë´ËÈ´²»Äܹ²Óà SessionÓë Cookie £¬Ò²¾ÍÎÞ·¨¹²ÏíÉí·ÝÑé֤Ʊ£º

a). http://localhost/FormTest/Login.aspx

b). http://127.0.0.1/FormTest/Login.aspx

c). http://My_Computer_Name/FormTest/Login.aspx //ÒÔµçÄÔÃû³Æä¯ÀÀÕ¾µã

d). http://192.168.0.8/FormTest/Login.aspx //ÒÔÍø¿¨µØÖ·ä¯ÀÀÕ¾µã

e). http://172.meibu.com/FormTest/Login.aspx //ÓµÓйú¼ÊÓòÃû

2¡¢ ÔÚ ASP.NET ÖÐÈçºÎÌá½»¸øÆäËüÒ³Ãæ

ÓùýViewState µÄ´ó¸Å¶¼ÖªµÀ£¬ViewStateÊDZ£´æÔÚ¿Í»§¶ËµÄ¡£²»Öª´ó»ï×¢ÒâûÓУ¬ASP.NET ΪÿÕÅ .aspx Ò³Ã涼Å䱸Á˶À×﵀ ViewState£¬ÇÒ±»½âÎöºó¶¼ÊÇÒÔÒ»¸ö name=" __VIEWSTATE" µÄÒþ²Ø¿Ø¼þÖµÀ´±£´æViewState¡£Ã¿´ÎÒ³ÃæÌá½»£¬·þÎñÆ÷¶¼»á¼ì²é¸Ã¿Ø¼þµÄÖµÓÐÎÞ±»´Û¸Ä£¬Èç´ËÒ»À´¾Í×¢¶¨ .aspx Ö»ÄÜÌá½»¸ø±¾Ò³¡£·þÎñÆ÷ÊÇËÀµÄ£¬ÈËÊÇ»îµÄ£¬ÎÒÃDz»Äܱ»ÕâЩÌõÌõ¿ò¿òÏÞ¶¨ËÀÁË£¬ÎÒÃÇÒª°Ñ³ÌÐòд³É»îµÄ¡£

ÏÂÃæÔÛÃÇ´Ó http://localhost/FormTest/Login.aspx ÊäÈëÓû§ÃûÓëÃÜÂ룬ȻºóÌá½»¸øhttp://127.0.0.1/FormTest/Public/LoginTransfer.aspx ¡£Login.aspxÓëLoginTransfer.aspx¶¼°üº¬Óû§ÃûÊäÈë¿òÒ»¸ö¡¢ÃÜÂëÊäÈë¿òÒ»¸ö¡¢µÇ¼°´Å¥Ò»¸ö¡£ÔÚ Login.aspx Ò³Ãæ¼ÓÈëÒÔÏ´úÂ룺

this.Btn_Login.Attributes["onclick"]="SingleSignOn()"; //Ö¸¶¨Ö´Ðнű¾Ê¼þ

ÔÚ Login.aspx Ò³ÃæÉϲåÈëÒÔϽű¾£º

<script language="javascript">

         function SingleSignOn()

          {

//Ö»ÄÜÓýű¾¸Ä±äÖ¸¶¨ Form Ìá½»µÄ¶ÔÏó

document.getElementById("Form1").action="http://127.0.0.1/FormTest/Public/LoginTransfer.aspx?FromUrl="+window.location.href;

    

               //°ÑÒþ²Ø¿Ø¼þ __VIEWSTATE ÖеÄÖµ±ä¸üΪ LoginTransfer.aspx ½âÎöºó³öÏÖµÄÖµ£¬ÒÔʵ¼Ê¿´µ½µÄֵΪ׼

document.all.__VIEWSTATE.value = "dDwtMTkyODUzMTMyNzs7Pv1cp2RaxUcr5hGYf8ILX9/EMKy8";

       }

</script>

×¢ÒâÊÂÏî

a). LoginTransfer.aspx ³öÏֵĿؼþ¼°Æä ID £¬±ØÐëÄܹ»ÔÚ Login.aspx ÕÒµ½

b). ¿Ø¼þµÄ ID ±ØÐëÒ»Ö£¬ÇÒÄÜÒ»Ò»¶ÔÓ¦

c). ¹ØÓÚ __VIEWSTATEÖеÄÖµ£¬ËüÓëÒ³Ãæ¿Ø¼þID Î޹أ¬Óëä¯ÀÀ¸ÃÒ³ÃæµÄÍøÖ·Î޹أ¬Ä¿Ç°ÎÒÖ»ÖªµÀºÍ¿Ø¼þµÄÊýÁ¿¡¢ÀàÐÍ¡¢Ãû×ֿռ䣨namespace FormTest.Public £©ÒÔ¼°´æÔÚµÄ ViewStateÓйØϵ¡£´ó¼ÒÔÚ²âÊÔʱ£¬ÒÔÖ±½Óä¯ÀÀhttp://127.0.0.1/FormTest/Public/LoginTransfer.aspx ºó£¬²é¿´Ò³ÃæÔ´ÎļþËù¿´µ½µÄֵΪ׼¡£

d). Ìá½»ºó£¬½«´¥·¢²¢Ö´ÐÐLoginTransfer.aspx ÖеÄBtn_Login_Click ʼþ

3¡¢ »ù±¾Ë¼Â·

¸÷¸öÕ¾µãµÄµÇ¼ҳÃæͳһ½«Óû§ÃûÓëÃÜÂëÌá½»¸ø LoginTransfer.aspx £¬Í¬Ê±¸÷¸öÕ¾µãÐèÒªÒ»¸öÔö¼Ó Cookie µÄÒ³Ã棬ÓÃÓÚ½«¼ÓÃܺóµÄÉí·ÝÑéÖ¤ Cookie Ìí¼ÓÖÁ¿Í»§¶Ë¡£´ËÄ˾­¹ýÒ»·¬¿¼Á¿ºó£¬×îÖÕÈ·¶¨µÄ¿ÉÐÐÐÔ·½°¸¡£

4¡¢ µÚÒ»ÖÖ˼·¡ª¡ªÌìŮɢ»¨

ºÎνÌìŮɢ»¨£¬¾ÍÊÇ°Ñ Cookie ÔڵǼºóÒ»´ÎÐÔÈ«·¢·Å³öÈ¥£¬¾ÍÈçͬÌìÏÉÔÚ¿ÕÖÐÉ¢»¨Ò»Ñù£¬³¡ÃæÊǺεȵÄ׳¹Û¡£ÏÂÃ濪ʼд´úÂ룺

Ϊ¸üºÃµÄÇø·Ö£¬ÎÒÃǽ«¸ºÔðÌí¼Ó Cookie µÄÒ³Ãæ·Ö¿ªÃüÃû£º

a). http://localhost/FormTest/Public/AddCookie_A.aspx

b). http://127.0.0.1/FormTest/Public/AddCookie_B.aspx

c). http://My_Computer_Name/FormTest/Public/AddCookie_C.aspx

ÕâÈýÕÅÒ³ÃæµÄ¹¦ÄÜÒ»Ñù£¬ËùÒÔ´úÂëÒ²¾ÍÏàͬ†ª

private void Page_Load(object sender, System.EventArgs e)

   {

      string from = Request["FromUrl"];         //Æðʼ URL ·¾¶

      string next = Request["NextUrl"];         //»¹ÐèÒªÌøתµÄ URL

      string key = Request["CookieTicket"];      //ÒѼÓÃÜµÄ Cookie Îı¾

      if(key != null && key !="")

       {

           System.Web.HttpCookie ck = new HttpCookie(System.Web.Security.FormsAuthentication.FormsCookieName,key);

           ck.Path=System.Web.Security.FormsAuthentication.FormsCookiePath;

           ck.Expires = System.DateTime.Now.AddYears(100);

           Response.Cookies.Add(ck); //½«´«¹ýÀ´µÄÒѼÓÃܵÄÉí·ÝÑé֤ƱÌí¼ÓÖÁ¿Í·¿¶Ë

                  

           string url = next.Split(';')[0]; //´Ó URL Öвð·Ö³ö½«ÒªÌøתµÄÏÂÒ»ÕÅÒ³Ãæ

           next = next.Replace(url+";",""); //´øÈëÏÂÒ»ÂÖÌøתµÄ×Ö´®

           if(url!="")

           {

                 //ÌøÖÁÏÂÒ»Ò³Ãæ     Response.Redirect(url+"?CookieTicket="+key+"&FromUrl="+from+"&NextUrl="+next);

            }

            else  //ÒÑûÓÐÏÂÒ»Ò³Ãæ¿É¹©Ìøת

            {

                 Response.Redirect(from);    //»Øµ½ÆðʼҳÃæ

            }

       }

    }

½ÓÏÂÀ´±àд LoginTransfer.aspx µÄ´úÂ룺

//Ò³Ãæ³£Á¿ allLoginUrl ´æ·ÅËùÓÐÕ¾µãµÄ AddCookie.aspx µÄ URL£¬×¢ÒâÒÔ ; ·Ö¸ô

public const string allLoginUrl =   

"http://localhost/FormTest/Public/AddCookie_A.aspx;"

+"http://127.0.0.1/FormTest/Public/AddCookie_B.aspx;"

+"http://My_Computer_Name/FormTest/Public/AddCookie_C.aspx;";

żÒÑÔÚÉÏÃæ½²ÊöÁË£¬ÈçºÎµã»÷ Login.aspx ÖеĵǼ°´Å¥Btn_Login½«Óû§ÃûÓëÃÜÂëÌá½»¸ø LoginTransfer.aspx £¬²¢Ö´ÐÐLoginTransfer.aspx ÖеÄBtn_Login_Click ʼþ¡£

private void Btn_Login_Click(object sender, System.EventArgs e)

  {

     string from = Request["FromUrl"];    //Æðʼ URL ·¾¶

     string next = this.allLoginUrl; 

             

     //ÓÉÓڿؼþ ID Ïàͬ£¬ËùÒÔ´Ë´¦µÃµ½µÄÊÇÓÉ Login.aspx Ìá½»¹ýÀ´µÄÓû§ÃûÓëÃÜÂë

     if(this.Txt_LoginName.Text=="Admin"&&this.Txt_Password.Text=="123456")

     {

        System.Web.Security.FormsAuthenticationTicket tk = new System.Web.Security.FormsAuthenticationTicket(1,"Admin", System.DateTime.Now, System.DateTime.Now.AddYears(100),false,"²âÊÔÓû§Êý¾Ý"  );

        string key = System.Web.Security.FormsAuthentication.Encrypt(tk); //µÃµ½¼ÓÃܺóµÄÉí·ÝÑé֤Ʊ×Ö´®

        string url = next.Split(';')[0]; //´Ó URL Öвð·Ö³ö½«ÒªÌøתµÄÏÂÒ»ÕÅÒ³Ãæ

        next = next.Replace(url+";",""); //´øÈëÏÂÒ»ÂÖÌøתµÄ×Ö´®

        Response.Redirect(url+"?CookieTicket="+key+"&FromUrl="+from+"&NextUrl="+next); //ÌøÖÁÏÂÒ»Ò³Ãæ

     }       

  }

5¡¢ µÚ¶þÖÖ˼·¡ª¡ªºóôàÉäÈÕ

ºóôàÉäÈÕ£¬Òâ˼ָµÄÊÇÓû§µãÄľÍÌøÄÄ¡£ËûÈôÊǵ㡰»ð¿Ó¡±£¬ÄãÒ²µÃÍùÀïÌø£¬ÒòΪÓû§ÊÇÉϵÛÂï¡£ÎÒÃÇÔö¼ÓÒ»¸öͨÐÐÖ¤Ò³Ãæ MyPassport.aspx £¬ÓÉ http://127.0.0.1/FormTest/Public/LoginTransfer.aspx ·¢·ÅÑéÖ¤ Cookie ºóÖ±½ÓÌøתÖÁ http://127.0.0.1/FormTest/MyPassport.aspx ¡£²»Òª¸æËßÎÒÄã²»»á£¬ÄãÒªÊÇÕæ²»»á£¬ÄÇżҲû·¨×ÓÀ²£¬»¹µÃÇëÄã»ØÍ·¿´¿´£¬Å¼ÔÚµÚÈýƪÊÇÈçºÎ½²Êö·¢·ÅÓÀ¾ÃÐÔÑéÖ¤ Cookie °É£¨http://blog.csdn.net/cityhunter172/archive/2005/12/06/545301.aspx£©¡£»¹ÐèÒªÒ»ÕÅÓÃ×÷Ìø°åµÄÌøתҳÃæ MyTransfer.aspx ¡£

MyPassport.aspx µÄ´úÂ룺

<a target ="_blank"

href="MyTransfer.aspx?goto=http://localhost/FormTest/Public/AddCookie_D.aspx">

ÃÀÀöµÄÌìʹ</a>

<a target ="_blank"  

href="MyTransfer.aspx?goto=http://127.0.0.1/FormTest/Public/AddCookie_E.aspx">

¿ìÀÖµÄÌìÌÃ</a>

<a target ="_blank"

href="MyTransfer.aspx?goto=http://My_Computer_Name/FormTest/Public/AddCookie_F.aspx">

´ó´óµÄ»ð¿Ó</a>

MyTransfer.aspx µÄ´úÂ룺

 private void Page_Load(object sender, System.EventArgs e)

   {

      //»ñÈ¡Éí·ÝÑé֤Ʊ

       System.Web.Security.FormsAuthenticationTicket tk =((System.Web.Security.FormsIdentity)User.Identity).Ticket;

      string key = System.Web.Security.FormsAuthentication.Encrypt(tk); //ÿ´Î¼ÓÃܺóµÄ×Ö´®¶¼ÊDz»Í¬µÄ

      string next = Request["goto"]; //½«ÒªÌøתµÄ URL

      Response.Redirect(url+"?CookieTicket="+key); //ÌøתÖÁÏÂÒ»Ò³Ãæ

   }

AddCookie_D.aspx¡¢AddCookie_E.aspx¡¢AddCookie_F.aspx ÕâÈýÕÅÒ³ÃæµÄ´úÂ룺

string key = Request["CookieTicket"]; //ÒѼÓÃÜµÄ Cookie Îı¾

if(key != null && key !="")

{

    System.Web.HttpCookie ck = new HttpCookie(System.Web.Security.FormsAuthentication.FormsCookieName,key);

    ck.Path=System.Web.Security.FormsAuthentication.FormsCookiePath;

    ck.Expires = System.DateTime.Now.AddYears(100);

    Response.Cookies.Add(ck); //½«´«¹ýÀ´µÄÒѼÓÃܵÄÉí·ÝÑé֤ƱÌí¼ÓÖÁ¿Í·¿¶Ë

    Response.Redirect("../Index.aspx"); //ÌøתÖÁÄãÕæÕýÏë´ø¿Í»§È¥µÄµØ·½

}

6¡¢ µãÆÀ

Á½Õß¹²Í¬µã£º

a). ÿ¸öÕ¾µã¶¼ÐèÒªÒ»¸öµÇ¼µÄÌá½»µã¡¢Ò»ÕÅÌí¼Ó Cookie µÄÒ³Ãæ¡£

b). ÒòΪֻÄÜ¿¿·¢·ÅÑéÖ¤ Cookie À´Ê¶±ðÉí·Ý£¬ËùÒÔһ̨µçÄÔ²»ÄÜͬʱµÇ¼Á½¸öÕʺš£

c). ¶¼´æÔÚ²»Í¬³Ì¶ÈµÄ°²È«Òþ»¼¡£

Á½Õß²»Í¬µã£º(ÌìŮɢ»¨ÒÔϼò³Æ¡°¿ªÅ®¡±£¬ºóôàÉäÈվͼò³Æ¡°ºóôࡱ)

a). ÌìŮһ´ÎÐÔ·¢·Å Cookie £¬Èç¹ûÕ¾µã½Ï¶à£¬´¦ÀíÆðÀ´»¹ÊÇÐèҪһЩʱ¼äµÄ¡£¶øºóôàÔòÏà·´£¬Õ¾µãÔÙ¶àÒ²²»Å¡£

b). ÌìÅ®ÔÚÉ¢»¨µÄ¹ý³ÌÖУ¬Èç¹ûÖÐ;±»¿¨×¡£¬ÔòÐèÒªÒ»¸ö´íÎó´¦Àí»úÖÆ×ö»ØÍË´¦Àí¡£ºóôàÔò²»ÐèÒª¡£

c). ÌìÅ®ÔڵǼºó¿ÉÒÔÖ±½ÓÔÚ IE µØÖ·ä¯ÀÀÆäÏë¿´µÄÕ¾µã£»¶øºóôàÔò±ØÐë´ÓͨÐÐÖ¤µÄÌø°åÒ³Ãæ½øÈë²ÅÐС£

¸ù¾ÝÉÏÊöÎÊÌ⣬¸ø¼¸µã½¨Ò飺

a). ²»ÒªÊ¹ÓÃÓÀ¾ÃÐÔ Cookie £¬Ó¦Ö¸Ã÷Éí·ÝÑé֤ƱµÄ¹ýÆÚʱ¼ä£¬×¢Òâ²»ÊÇ Cookie µÄÓÐЧÆÚ¡£

b). ÔÚÉí·ÝÑé֤ƱµÄ UserData ÖмÓÈëÆäËüµÄÑéÖ¤ÐÅÏ¢»ò´æ·ÅÓû§ ID

c). ÔÚÍøÂçͨ³©µÄÇé¿öÏ£¬±ÈÈç¾ÖÓòÍø£¬Õ¾µãÓÖÏà¶Ô½ÏÉÙ£¬½¨ÒéÑ¡ÓÃÌìÅ®¡£50 ¸öÕ¾µãÖ®¼ä×öÌøתӦ¸Ã²»»á³¬¹ý 10 Ã루ǰÌáÊÇÒѱàÒëºÃÁË£¬ÇÒ²»Êdzõ´Î·ÃÎÊ£©¡£

Èý¡¢ ¿çÓòÃû¡¢¿ç·þÎñÆ÷µÄÍ˳ö·½·¨

Ö»ÒªÀí½âÁË¡°ÌìŮɢ»¨¡±£¬Í˳ö¾Í±È½ÏÈÝÒ×À²¡£ÎªÃ¿¸öÕ¾µã×¼±¸Ò»¸öÓÃÓÚÍ˳öµÄÒ³Ã棬ÈçÏ£º

a). http://localhost/FormTest/Public/Logout.aspx

b). http://127.0.0.1/FormTest/Public/Logout.aspx

c). http://My_Computer_Name/Public/FormTest/Logout.aspx

private void Page_Load(object sender, System.EventArgs e)

{

    System.Web.Security.FormsAuthentication.SignOut();//ɾ³ý Cookie ÖеÄÉí·ÝÑé֤Ʊ

    string from = Request["FromUrl"];

    string next = Request["NextUrl"];

    string url = next.Split(';')[0];

    next = next.Replace(url+";","");

    if(url!="")

    {

       Response.Redirect(url+"?FromUrl="+from+"&NextUrl="+next);

    }

    else

    {

       Response.Redirect(from);

    }

}

¶ÔÀ²£¬»¹ÓÐÒ»ÕÅ LogoutTransfer.aspx. £¬´úÂëż¾Í²»Ð´£¬´ó¼Ò×Ô¸öÍê³É°É¡£