程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> Froms認證

Froms認證

編輯:C#入門知識

[csharp]
if (this.Txt_UserName.Text == "Admin" && this.Txt_Password.Text == "123456") 
            { 
               
                var ticket = new System.Web.Security.FormsAuthenticationTicket(1, this.Txt_UserName.Text, DateTime.Now, DateTime.Now.AddDays(1), false, "USER"); 
                var encryptedTicket = System.Web.Security.FormsAuthentication.Encrypt(ticket); 
 
                if (Request.Cookies[System.Web.Security.FormsAuthentication.FormsCookieName] != null) 
                    Request.Cookies.Remove(System.Web.Security.FormsAuthentication.FormsCookieName); 
 
                var loginIdentify = new HttpCookie(System.Web.Security.FormsAuthentication.FormsCookieName); 
                loginIdentify.Expires = DateTime.Now.AddDays(1); 
                loginIdentify.Value = encryptedTicket; 
 
                Response.AppendCookie(loginIdentify); 
                if (!String.IsNullOrEmpty(Request.QueryString["ReturnUrl"]) && !Request.QueryString["ReturnUrl"].ToLower().Contains("profile")) 
                    Response.Redirect(Server.UrlDecode(Request.QueryString["ReturnUrl"])); 
                else 
                    Response.Redirect(System.Web.Security.FormsAuthentication.DefaultUrl); 
 
            } 

if (this.Txt_UserName.Text == "Admin" && this.Txt_Password.Text == "123456")
            {
             
                var ticket = new System.Web.Security.FormsAuthenticationTicket(1, this.Txt_UserName.Text, DateTime.Now, DateTime.Now.AddDays(1), false, "USER");
                var encryptedTicket = System.Web.Security.FormsAuthentication.Encrypt(ticket);

                if (Request.Cookies[System.Web.Security.FormsAuthentication.FormsCookieName] != null)
                    Request.Cookies.Remove(System.Web.Security.FormsAuthentication.FormsCookieName);

                var loginIdentify = new HttpCookie(System.Web.Security.FormsAuthentication.FormsCookieName);
                loginIdentify.Expires = DateTime.Now.AddDays(1);
                loginIdentify.Value = encryptedTicket;

                Response.AppendCookie(loginIdentify);
                if (!String.IsNullOrEmpty(Request.QueryString["ReturnUrl"]) && !Request.QueryString["ReturnUrl"].ToLower().Contains("profile"))
                    Response.Redirect(Server.UrlDecode(Request.QueryString["ReturnUrl"]));
                else
                    Response.Redirect(System.Web.Security.FormsAuthentication.DefaultUrl);

            }

//System.Web.Security.FormsAuthentication.SignOut();退出

 


//Page.User.Identity.Name獲取用戶名

 


// if (User.Identity.IsAuthenticated)判斷是否通過認證

 

 

 

//web.config配置

 


    <authentication mode="Forms">
      <forms loginUrl="Login.aspx" name=".ASPXAUTH" timeout="43200" defaultUrl="WebForm1.aspx" protection="All" path="/" requireSSL="false" slidingExpiration="true" enableCrossAppRedirects="false"  />
    </authentication>
    <anonymousIdentification enabled="true" />
    <authorization>
      <deny users="?"></deny>
    </authorization>

 

 

 

 

 

 


在一個ASP.NET網站中,有些頁面會允許所有用戶訪問,包括一些未登錄用戶,但有些頁面則必須是已登錄用戶才能訪問,還有一些頁面可能會要求特定的用戶或者用戶組的成員才能訪問。這類頁面因此也可稱為【受限頁面】,它們一般代表著比較重要的頁面,包含一些重要的操作或功能。

為了保護受限制的頁面的訪問,ASP.NET提供了一種簡單的方式:可以在web.config中指定受限資源允許哪些用戶或者用戶組(角色)的訪問,也可以設置為禁止訪問。

比如,網站有一個頁面:MyInfo.aspx,它要求訪問這個頁面的訪問者必須是一個已登錄用戶,那麼可以在web.config中這樣配置:

<location path="MyInfo.aspx">
    <system.web>
        <authorization>
            <deny users="?"/>
        </authorization>
    </system.web>
</location>
為了方便,我可能會將一些管理相關的多個頁面放在Admin目錄中,顯然這些頁面只允許Admin用戶組的成員才可以訪問。 對於這種情況,我們可以直接針對一個目錄設置訪問規則:

<location path="Admin">
    <system.web>
        <authorization>
            <allow roles="Admin"/>
            <deny users="*"/>
        </authorization>
    </system.web>
</location>
這樣就不必一個一個頁面單獨設置了,還可以在目錄中創建一個web.config來指定目錄的訪問規則,請參考後面的示例。

在前面的示例中,有一點要特別注意的是:
1. allow和deny之間的順序一定不能寫錯了,UrlAuthorizationModule將按這個順序依次判斷。
2. 如果某個資源只允許某類用戶訪問,那麼最後的一條規則一定是 <deny users="*" />

在allow和deny的配置中,我們可以在一條規則中指定多個用戶:
1. 使用users屬性,值為逗號分隔的用戶名列表。
2. 使用roles屬性,值為逗號分隔的角色列表。
3. 問號 (?) 表示匿名用戶。
4. 星號 (*) 表示所有用戶。

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved