云自無心水自閑

          天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
          posts - 288, comments - 524, trackbacks - 0, articles - 6
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          表單認證是Asp.net中最Cool的功能之一,一般來說應用都會要求輸入認證信息(典型的是用戶名和密碼)。
          在Web.config的設置項中,可以指定登錄頁面和哪些資源需要保護。當用戶第一次訪問被保存的資源時,應用會自動定向到指定的登錄頁面。
          如果成功登錄,ASP.NET會轉到用戶初始請求的頁面。
          以往的應用需要在每個頁面的頂部判斷用戶是否成功登錄,手工定向到登錄頁面,而現在這個工作由表單認證簡單地完成了。

          舉個簡單的例子來說明開發過程:
          一個應用中有兩個頁面PublicPage.aspx是向公眾開放的,PrivatePage.aspx只允許登錄用戶才能訪問。
          第3個頁面是登錄頁面,要求輸入用戶名和密碼。
          步驟如下:
          1、把PublicPage.aspx, login.aspx, web.config拷貝到一個IIS的虛擬目錄下。
          2、創建一個子目錄Secret,將PrivatePage.aspx, web.config拷貝到子目錄中。
          3、在web.config中添加以下代碼, 實現訪問保存頁面自動跳轉登錄頁面的功能
          <authentication mode="Forms">
            <forms loginUrl="LoginPage.aspx">
              ....
            </forms>
          </authentication>
          4、另外有一個<credentials>小節列出合法用戶和密碼
          <credentials passwordFormat="Clear">
            <user name="Jeff" password="imbatman" />
            <user name="John" password="redrover" />
            <user name="Bob" password="mxyzptlk" />
            <user name="Alice" password="nomalice" />
            <user name="Mary" password="contrary" />
          </credentials>
            此例子中關掉了的加密選項,缺省是開的。
           
          5、在Secret子目錄的web.config中添加以下代碼,實現保護功能。
            <authorization>
             <deny users="?" />
            </authorization>
          這是用于通知權限管理模塊System.Web.Security.UrlAuthorizationModule阻止未登錄用戶的訪問。"?"代表匿名用戶,也可以說是未登錄用戶。
          實際的權限驗證是由Login.aspx完成的。下列語句
           if(FormsAuthentication.Authenticate(UserName.Text,Password.Text))
          把用戶名和密碼傳給System.Web.Security.FormsAuthentication,如果驗證成功,返回True。并且執行頁面跳轉語句
          FormsAuthentication.RedirectFromLoginPage(UserName.Text,false);

          6、真實環境的表單認證比上面的例子要復雜的多,真實應用不大可能把用戶和密碼保存在文本文件中,比較常見的是存放在數據庫中。
          假定用戶表Users有3個字段UserName, password, Role.
          對于這種情況,我們需要在剛才的基礎上進行2個地方的修改:Login.aspx、web.config(根目錄下的)
          在web.config中不再需要<credentials>小節了。
          login.aspx也不再使用 FormsAuthentication.Authenticate 來驗證密碼,而使用CustomAuthenticate替代。
          在這個方法中使用Sql查詢語句來判斷用戶是否合法。

           

           



          主站蜘蛛池模板: 镇江市| 东莞市| 桑日县| 东城区| 和政县| 彰化县| 宜黄县| 尼勒克县| 蒲江县| 南投市| 利津县| 肥城市| 新兴县| 织金县| 永登县| 杂多县| 昌江| 东乡族自治县| 新泰市| 三明市| 绥棱县| 肇东市| 肇州县| 独山县| 徐闻县| 正阳县| 江山市| 南溪县| 罗源县| 当雄县| 宣城市| 彭山县| 泽普县| 寻乌县| 南澳县| 会宁县| 平乡县| 临泉县| 宁安市| 奉贤区| 南汇区|