FormsAuthenticationTicket基于forms的驗證

構建基于forms的驗證機制過程如下:
 1,設置IIS為可匿名訪問和asp.net web.config中設置為form驗證
 2,檢索數據存儲驗證用戶,并檢索角色(如果不是基于角色可不用)
 3,使用FormsAuthenticationTicket創建一個Cookie并回發到客戶端,并存儲
  角色到票據中,如:
  FormsAuthentication.SetAuthCookie(Username,true | false)
  cookies保存時間:
  HttpContext.Current.Response.Cookies[FormsAuthentication.FormsCookieName].Expires=DateTime.Now.AddDays(1)
 
  如果需要存儲角色,采用:
 FormsAuthenticationTicket authTicket = new
 FormsAuthenticationTicket(
  1, // 版本號。
  txtUserName.Text, // 與身份驗證票關聯的用戶名。
  DateTime.Now, // Cookie 的發出時間。
  DateTime.Now.AddMinutes(20),// Cookie 的到期日期。
  false, // 如果 Cookie 是持久的,為 true;否則為 false。
  roles ); // 將存儲在 Cookie 中的用戶定義數據。
  roles是一個角色字符串數組
  string encryptedTicket = FormsAuthentication.Encrypt(authTicket); //加密
 
  存入Cookie
  HttpCookie authCookie =
  new HttpCookie(FormsAuthentication.FormsCookieName,
  encryptedTicket);
 
  Response.Cookies.Add(authCookie);
 
 4,在Application_AuthenticateRequest事件中處理程序中(Global.asax)中,使用
  票創建IPrincipal對象并存在HttpContext.User中
  代碼:
  HttpCookie authCookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName];
  FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);//解密
  string[] roles = authTicket.UserData.Split(new char[]{';'});//根據存入時的格式分解,;或|....
  Context.User = new GenericPrincipal(Context.User.Identity, Roles);//存到HttpContext.User中
 
 判斷某個角色驗證
 HttpContext.Current.User.IsInRole(roles)
 具體實現
 
 Web.config文件
 加入節點,name為COOKIE名稱,loginUrl為沒有通過驗證跳轉的地址
 <system.web>
  <authentication mode="Forms">
  <forms name="Hstear"
 loginUrl="login.aspx" protection="All" path="/" timeout="40"/>
  </authentication>
 </system.web>
 設置目錄訪問 path為目錄名,roles為票據中的角色名
 發現網上的都說要單獨一個WEB.CONFIG文件放在目錄中,但實際在根目錄中設置即可,單個文件也一樣
 <location path="Admin">
  <system.web>
  <authorization>
  <allow roles="admin"/>
  <deny users="*"/>
  </authorization>
  </system.web>
 </location>
 Global.asax文件
 Application_AuthenticateRequest事件中加入
  protected void Application_AuthenticateRequest(Object sender, EventArgs e)   {  string cookieName = FormsAuthentication.FormsCookieName;  HttpCookie authCookie = Context.Request.Cookies[cookieName];  FormsAuthenticationTicket authTicket = null;  try  {   authTicket = FormsAuthentication.Decrypt(authCookie.Value);  }  catch(Exception ex)  {   return;  }    string[] roles = authTicket.UserData.Split(new char[]{','});//如果存取多個角色,我們把它分解    FormsIdentity id = new FormsIdentity( authTicket );    GenericPrincipal principal = new GenericPrincipal(id, roles);  Context.User =principal;//存到HttpContext.User中     }  
 原理,將用戶角色信息保存在票據中,通過Global.asax,WEB.CONFIG中的設置,判斷角色的權限

轉載于:https://www.cnblogs.com/mybluesky99/archive/2011/06/14/2080493.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/448322.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448322.shtml
英文地址,請注明出處:http://en.pswp.cn/news/448322.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

通過公共汽車站

要求 通過班車站&#xff0c;應降低速度慢行&#xff0c;掛一擋通過&#xff0c;注意左右仔細查看。操作方法 1、減速慢行&#xff0c;注意觀察公共汽車周圍的交通情況&#xff0c;以防突然情況的出現; 2、在超越公共汽車時&#xff0c;注意提防公共汽車起步后突然向左轉…

STL之函數適配器

1.理論知識 2.常用函數適配器 標準庫提供一組函數適配器&#xff0c;用來特殊化或者擴展一元和二元函數對象。常用適配器是&#xff1a; 1綁定器&#xff08;binder&#xff09;: binder通過把二元函數對象的一個實參綁定到一個特殊的值上&#xff0c;將其轉換成一元函數對象…

真正理解 git fetch, git pull 以及 FETCH_HEAD

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 真正理解 git fetch, git pull 要講清楚git fetch&#xff0c;git pull,必須要附加講清楚git remote&#xff0c;git merge 、遠程rep…

pyqt5 + pyinstaller 制作爬蟲小程序

環境:mac python3.7 pyqt5 pyinstaller ps: 主要是熟悉pyqt5, 加入了單選框 輸入框 文本框 文件夾選擇框及日歷下拉框 效果圖: pyqt5 主程序文件 # -*- coding: utf-8 -*- # Author: Mehaei # Date: 2019-07-10 13:02:56 # Last Modified by: Mehaei # Last Modified time…

通過學校區域

通過學校區域的要求 應觀察前后左右的交通情況&#xff0c;適時減速慢行&#xff0c;不得鳴喇叭和與學生搶行。 操作方法 當駕駛車輛行至學校附近或有注意兒童標志路段時&#xff0c;一定要及時減速&#xff0c;注意觀察道路兩側或周圍的情況&#xff0c;時刻堤防學生橫…

axios中出現兩次請求,OPTIONS請求和GET請求

在項目中發現ajax中出現兩次請求&#xff0c;OPTIONS請求和GET請求 查看到瀏覽器NetWork有兩次請求&#xff0c;請求url一樣&#xff1a; 查找原因是瀏覽器對簡單跨域請求和復雜跨域請求的處理區別。 XMLHttpRequest會遵守同源策略(same-origin policy). 也即腳本只能訪問相同協…

筆試面試收獲(持續更新中)

1. Internet 是有ARPANET發展而來 2. NFS&#xff08;Network File System&#xff09;即網絡文件系統 3. OSI參考模型七層&#xff1a;物理層&#xff0c;數據鏈路層&#xff0c;網絡層&#xff08;IP,路由器&#xff0c;三層交換機&#xff09;&#xff0c;傳輸層&#xff…

Linux 安裝 配置 Maven

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1.需要提前安裝JDK&#xff0c;并且配置環境變量 請參考&#xff1a;https://blog.csdn.net/jiangyu1013/article/details/84321146 2.…

Threading in C#

這里推薦一些C#編程多線程的學習資料&#xff1a; http://knowledge.swanky.wu.googlepages.com/threading_in_c_sharp.html Ebook in English&#xff1a;http://cid-068f7d75d8585700.skydrive.live.com/self.aspx/ebook/threading.pdf 一些demo&#xff1a;http://cid-068f7…

經理人如何與這“六種人”打交道?

在職場中&#xff0c;我們要與不同身份、不同年齡、不同崗位、不同性別、不同性格的人打交道。在平時的實際工作接觸中&#xff0c;善于與不同人打交道的經理人&#xff0c;會根據不同的情況用不同的態度和方式來對待之。 1、如何與死板的人打交道 與這樣的人交往&#xff0c…

[Git高級教程 (一)] 通過 Tag 標簽回退版本修復 bug

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1 前言 本系列之所以取名”Git高級教程”&#xff0c;主要是教大家解決實際工作中遇到的問題&#xff0c;要求讀者會基本的Git用法和命令…

Javascript 自定義輸出

緣由 前段時間再看了一些javascript的學習資料,也寫的一些demo,在輸出的時候一般都用alert,但這個方法會打斷函數運行,用起來不是很好.還有就是console.log這個方法,這種方法原來一直以為只能在FireFox上面才能用,現在才發現主流瀏覽器都支持.但我的這個插件已經寫的差不多了,所…

不要打2歲內和6歲后的孩子 父母必看

一位媽媽說&#xff1a;“孩子經常無理取鬧&#xff0c;到超市就要買這買那&#xff0c;不給買就坐在地上哭鬧。到別人家去就亂翻亂動&#xff0c;還會到人家沙發上亂蹦&#xff0c;無論你怎么說&#xff0c;孩子都不聽話。每次我都會氣不打一處來&#xff0c;回到家就痛打一頓…

設計模式之開放封閉原則

以下皆是個人理解如有不對請留言指出&#xff0c;謝謝&#xff01; 我就代碼提出我自己個人的看法&#xff1a; 正常定義一個類例如銀行工作員&#xff0c;他可以執行存款&#xff0c;付款和轉賬功能&#xff0c;如果在現有功能上我想添加貸款功能&#xff0c;需要在類中添加…

[Git高級教程(二)] 遠程倉庫版本回退方法

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1 簡介 最近在使用git時遇到了遠程分支需要版本回滾的情況&#xff0c;于是做了一下研究&#xff0c;寫下這篇博客。 2 問題 如果提交了…

uplift model學習筆記

一、解決的問題&#xff1a; 通常的 Propensity Model 和 Response Model 只是給目標用戶打了個分&#xff0c;并沒有確保模型的結果可以使得活動的提升最大化&#xff1b;它沒有告訴市場營銷人員&#xff0c;哪個用戶最有可能提升活動響應&#xff1b; 因此&#xff0c;需要另…

必須看透的50個錯覺 人生要看透而不看破!

我們應該感謝命運的多喘&#xff0c;是它用歷練使一顆脆弱心的漸漸變得堅強&#xff0c;變得對一切都充滿了向往。無可否認&#xff0c;只有真正的經歷了一些事物之后&#xff0c;你才會對人生看得更加透徹&#xff0c;才會對世間真情感悟的更加真切。 1、個人只能被現實改變…

設計模式之依賴倒置原則

在傳統的過程式中&#xff0c;上層依賴于底層&#xff0c;當底層變化&#xff0c;上層也得跟著做出相應的變化。這就是面向過程的思想&#xff0c;弊端就是導致程序的復用性降低并且提高了開發的成本。 而面向對象的開發則很好的解決了這個問題&#xff0c;讓用戶程序依賴于抽象…

@Transactional 詳解

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Transactional 是聲明式事務管理 編程中使用的注解 1 .添加位置 1&#xff09;接口實現類或接口實現方法上&#xff0c;而不是接口類中…

LiveGBS高性能GB28181國標流媒體服務流傳輸模式支持UDP、TCP被動、TCP主動模式

LiveGBS國標(GB28181)流媒體服務軟件&#xff1a; 提供用戶管理及Web可視化頁面管理&#xff1b; 提供設備狀態管理&#xff0c;可實時查看設備是否掉線等信息&#xff1b; 實時流媒體處理&#xff0c;PS&#xff08;TS&#xff09;轉ES&#xff1b; 設備狀態監測、云臺控制、錄…