云自無心水自閑

          天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
          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查詢語句來判斷用戶是否合法。

           

           



          主站蜘蛛池模板: 福州市| 七台河市| 丹棱县| 罗江县| 临湘市| 南汇区| 贡嘎县| 来宾市| 徐闻县| 拉萨市| 密云县| 嘉祥县| 蕲春县| 珠海市| 丰宁| 井研县| 周至县| 宣汉县| 临澧县| 潍坊市| 安义县| 芜湖市| 宕昌县| 乐昌市| 安远县| 阿勒泰市| 彭州市| 固阳县| 改则县| 连城县| 尉犁县| 襄樊市| 阿合奇县| 青阳县| 双峰县| 克拉玛依市| 嘉黎县| 博乐市| 垣曲县| 太仆寺旗| 乐陵市|