国产+激情+免费,苍井空一区二区波多野结衣av,高潮抽搐潮喷毛片在线播放,成年女人毛片免费观看97,丰满的人妻hd高清日本

網(wǎng)站建設(shè),網(wǎng)站設(shè)計,網(wǎng)站制作,網(wǎng)站開發(fā)

asp.net中如何通過自帶的功能實現(xiàn)用戶認(rèn)證與授權(quán)
時間:06-09      
   杭州網(wǎng)站開發(fā)蒙特話不多說,直接進(jìn)入主題:

  用戶認(rèn)證

  .net提供了3種用戶認(rèn)證的方式,分別是Windows,Forms,Passport。這幾種形式的定義可以在網(wǎng)站根目錄下Web.config中的authentication節(jié)點中看見。Windows是默認(rèn)的驗證形式,它是根據(jù)機器的訪問權(quán)限來判斷的。Passport是微軟提供的一種驗證形式,不常用。我們需要的知道并了解的是forms形式。forms驗證就是表單認(rèn)證,提供了以身份id和密碼的形式進(jìn)行驗證和授權(quán)管理的功能。

  在正式使用forms驗證之前我們先看看它運行的一個流程:

  從上圖我們可以看出我們需要做一下幾件事情:

  1.配置web.config啟用forms驗證

  2.配置授權(quán)設(shè)置(哪些頁面未注冊用戶可以訪問)

  3.登錄頁面中生成用戶票據(jù)便于其他頁面訪問

  下面就來通過一個項目例子演示如何解決。源代碼我會在下面放出來,大家可以參照源代碼看看。先看看項目的截圖以便有個直觀的了解:

  配置web.config。

  配置方法如下,沒有驗證的用戶根據(jù)配置自動跳轉(zhuǎn)到loginUrl里面的頁面去登陸。

  配置授權(quán)設(shè)置

  同樣是在web.config中的下增加如下節(jié)點,“?”的意思指匿名用戶,而“*”則表示所有用戶。下面這個意思就是說根目錄下的所有頁面拒絕被匿名用戶訪問。當(dāng)然你也可以在users中填寫指定的用戶ID,不過那樣并不常用。還有deny,allow的順序是先寫allow完了再deny,不然就會出現(xiàn)問題。這個大家要記住。

  生成用戶票據(jù)

  我們在登錄事件的邏輯代碼中(Login.html下)增加如下代碼:

  //為用戶創(chuàng)建一個票證,并將其放入cookie或者url中(具體看你怎么設(shè)置票證的保存方式)

  FormsAuthentication.SetAuthCookie(userId,true);

  Response.Redirect("Info.html");

  很簡單的幾個設(shè)置就完成了用戶的認(rèn)證,是不是比你在每個頁面中都判斷用戶是否登錄簡便的多呢?!當(dāng)然了,上面的認(rèn)證只是簡單的認(rèn)證。假如我要實現(xiàn)User文件夾內(nèi)的網(wǎng)頁只有登錄用戶可以訪問,其他的則全部用戶都可以訪問怎么做呢?很簡單,不需要你編寫代碼。更改一下配置文件就是了。將根目錄下的web.config的authorization標(biāo)簽改為。然后在user文件下加一個web.config并修改內(nèi)容如下:

  現(xiàn)在再去測試看看已經(jīng)能達(dá)到效果了。所以說通過配置文件的組合你可以構(gòu)造出一個相對復(fù)雜的用戶授權(quán)訪問機制出來。不過通常我們的用戶不是會員與非會員那么簡單。會員中也有類別,比如初級,高級等等。這些用戶能訪問的用戶也是不一樣的。這時這種簡單的登錄不登錄判斷已經(jīng)沒有用了,我們需要引入用戶角色的概念,也就是我們下面講的用戶授權(quán)。

  用戶授權(quán)

  我們這里將的用戶授權(quán)主要是基于角色的授權(quán)。上面我們已經(jīng)講過了認(rèn)證用戶的原理,就是通過用戶登錄的時候給用戶一個表明身份的票據(jù),以后用戶登錄的時候通過這個票據(jù)就能知道這個用戶已經(jīng)被認(rèn)證了。角色授權(quán)就是在給用戶票據(jù)的時候在里面假如了一個字符串的角色信息,比如“Administrator”,然后當(dāng)一個請求過來的時候asp.net會有一個Application_AuthenticateRequest的事件專門用戶驗證用戶認(rèn)證授權(quán)。在這個事件中我們只需將這個字符表達(dá)的角色重建給用戶就可以了。可惜的是.net并沒有提供對角色的直接支持,雖然角色字符也被我們保存到了cookie中,不過也在服務(wù)器端的角色還原過程還是需要我們自己寫的。我們在Global.asax的Application_AuthenticateRequest方法中增加如下代碼:

  protectedvoidApplication_AuthenticateRequest(objectsender,EventArgse)

  {

  HttpApplicationapp=(HttpApplication)sender;

  HttpContextcontext=app.Context;//獲取本次Http請求的HttpContext對象

  if(context.Request.IsAuthenticated)//驗證過的一般用戶才能進(jìn)行角色驗證

  {

  FormsIdentityId=(FormsIdentity)context.User.Identity;//當(dāng)前用戶標(biāo)識

  FormsAuthenticationTicketTicket=Id.Ticket;//取得身份證票

  string[]Roles=Ticket.UserData.Split(',');//將角色數(shù)據(jù)轉(zhuǎn)成字符串?dāng)?shù)組,得到相關(guān)的角色信息

  context.User=newSystem.Security.Principal.GenericPrincipal(Id,Roles);//重新生成帶有角色信息的用戶

  }

  }

  因為我們需要在票據(jù)中增加角色信息,所以我們上面的登錄方法中添加票據(jù)的方法已經(jīng)不再適用,更改為如下:

  //點擊登陸按鈕

  //這里假設(shè)已經(jīng)通過了數(shù)據(jù)庫的對比,確實存在該用戶

  stringuserId="qianlifeng";

  stringpa="123";

  stringroles="Administrator";//從其他地方取得用戶角色數(shù)據(jù)

  FormsAuthenticationTicketTicket=newFormsAuthenticationTicket(1,userId,DateTime.Now,DateTime.Now.AddMinutes(30),true,roles);//建立身份驗證票對象

  stringHashTicket=FormsAuthentication.Encrypt(Ticket);//加密序列化驗證票為字符串

  HttpCookieUserCookie=newHttpCookie(FormsAuthentication.FormsCookieName,HashTicket);//生成Cookie

  Context.Response.Cookies.Add(UserCookie);//票據(jù)寫入Cookie

  Response.Redirect("Info.html");

  最后我們再來更改一下配置文件,設(shè)置info.html只有Administrator的角色才可以訪問。在根目錄的web.config下標(biāo)簽下面增加如下配置:

  表示info.html只有administrator角色的會員才能訪問。當(dāng)然如果你想實現(xiàn)文件夾的授權(quán)設(shè)置,和上面的設(shè)置類似在那個文件夾下面的web.config配置一下即可。


  對于網(wǎng)站開發(fā)\網(wǎng)站建設(shè)這一塊來說,蒙特對于大家應(yīng)該不會陌生,15年網(wǎng)站開發(fā)領(lǐng)軍平臺,如果大家還不了解我們,請大家多關(guān)注一下,相信互聯(lián)網(wǎng)的不斷發(fā)展大家需要我們的技術(shù)支持,商機的創(chuàng)建和引進(jìn)找我們你選對了!

©2000-2022 杭州蒙特信息技術(shù)有限公司版權(quán)所有

Mountor、蒙特是Mountor Corp.的注冊商標(biāo)。

經(jīng)營許可證編號:浙B2-20090322
技術(shù)支持:
更新時間:2023年01月31日
咨詢熱線:0571-88230881 15158184365
友鏈Q(jìng)Q: 1960819284
固話咨詢
手機咨詢
了解蒙特