ASP.NET Forms身份認證
asp.net程序開發(fā),用戶根據(jù)角色訪問對應(yīng)頁面以及功能。
項目結(jié)構(gòu)如下圖:
根目錄 Web.config 代碼:
<?xml version="1.0" encoding="utf-8"?> <!-- 有關(guān)如何配置 ASP.NET 應(yīng)用程序的詳細消息,請訪問 http://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> <authentication mode="Forms"> <forms loginUrl="login.aspx"></forms> </authentication> <!--<authorization> <allow users="*"></allow> </authorization>--> </system.web> </configuration>
admin文件夾中 Web.config 代碼:
<?xml version="1.0"?> <configuration> <system.web> <authorization> <allow roles="admin" /> <deny users="*"/> </authorization> </system.web> </configuration>
teacher文件夾中 Web.config 代碼:
<?xml version="1.0"?> <configuration> <system.web> <authorization> <allow roles="teacher" /> <deny users="*"/> </authorization> </system.web> </configuration>
student文件夾中 Web.config 代碼:
<?xml version="1.0"?> <configuration> <system.web> <authorization> <allow roles="student" /> <deny users="*"/> </authorization> </system.web> </configuration>
Login.aspx中登錄成功后設(shè)置Cookie,設(shè)置Cookie代碼:
protected void SetLoginCookie(string username, string roles) { System.Web.Security.FormsAuthentication.SetAuthCookie(username, false); System.Web.Security.FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, username, DateTime.Now, DateTime.Now.AddDays(1), false, roles, "/"); string hashTicket = FormsAuthentication.Encrypt(ticket); HttpCookie userCookie = new HttpCookie(FormsAuthentication.FormsCookieName, hashTicket); HttpContext.Current.Response.SetCookie(userCookie); }
Global.asax 中進行身份驗證:
protected void Application_AuthenticateRequest(object sender, EventArgs e) { HttpApplication app = (HttpApplication)sender; HttpContext ctx = app.Context; //獲取本次Http請求的HttpContext對象 if (ctx.User != null) { if (ctx.Request.IsAuthenticated == true) //驗證過的一般用戶才能進行角色驗證 { System.Web.Security.FormsIdentity fi = (System.Web.Security.FormsIdentity)ctx.User.Identity; System.Web.Security.FormsAuthenticationTicket ticket = fi.Ticket; //取得身份驗證票 string userData = ticket.UserData;//從UserData中恢復(fù)role信息 string[] roles = userData.Split(','); //將角色數(shù)據(jù)轉(zhuǎn)成字符串?dāng)?shù)組,得到相關(guān)的角色信息 ctx.User = new System.Security.Principal.GenericPrincipal(fi, roles); //這樣當(dāng)前用戶就擁有角色信息了 } } }
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
相關(guān)文章
Entity Framework使用DbModelBuilder API創(chuàng)建表結(jié)構(gòu)
這篇文章介紹了Entity Framework使用DbModelBuilder API創(chuàng)建表結(jié)構(gòu)的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03asp.net中Null在從數(shù)據(jù)庫讀取的時候的一點點小技巧
我們先看下面的一段代碼,這段代碼其實很平常,也是我們平時做項目很常用的一段2012-04-04asp.net網(wǎng)站開發(fā)包wq.dll打包下載
這個wq.dll主要是用來給Web群和C#聯(lián)盟群及GUI群的朋友使用的,其它群和使用控件開發(fā)web的朋友可以直接無視,這個封裝好的包是一個基礎(chǔ)開發(fā)包,可以輕松的幫你完成一些小型網(wǎng)站的開發(fā),支持.Net Framework2.0(及以上平臺)。2009-10-10.Net?Core?使用?TagProvider?與?Enricher?豐富日志的操作代碼
這篇文章主要介紹了.Net?Core?使用?TagProvider?與?Enricher?豐富日志的操作,本文通過示例代碼給大家介紹的非常詳細,需要的朋友可以參考下2024-03-03asp.net網(wǎng)站的404錯誤頁面的正確設(shè)置方法
asp.net網(wǎng)站的404錯誤頁面的正確設(shè)置方法,需要的朋友可以參考下。2010-05-05ASP.NET?MVC5網(wǎng)站開發(fā)項目框架(二)
這篇文章主要介紹了ASP.NET?MVC5網(wǎng)站開發(fā)項目框架,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2015-09-09.Net?Core應(yīng)用增強型跨平臺串口類庫CustomSerialPort()詳解
本文詳細講解了.Net?Core應(yīng)用增強型跨平臺串口類庫CustomSerialPort(),文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-01-01