http://blog.sina.com.cn/s/blog_6ad539a90100r7jx.html
現在的問題是任何使用者都可以通過StoreManager控制器來訪問我們的書籍管理頁面。接下來讓我們添加使用權限設定,限定只有管理員可以訪問該頁面。
7.1 追加Account(帳戶)控制器及視圖
在ASP.NET MVC 3中,一個完整的的Web應用程式模板與空的Web應用程式模板的區別之一就是空的模板中不包括Account(帳戶,或者說使用者)控制器。我們的做法是任意建立一個具有完整的ASP.NET MVC3 Web應用程式模板的應用程式,然後從中拷貝一些檔案過來。
任意建立一個具有完整模板的ASP.NET MVC3 Web應用程式,然後將下列檔案拷貝到本應用程式的相同位置處。
1.拷貝AccountController.cs到Controllers檔案夾下。
2.拷貝AccountModels.cs到Models檔案夾下。
3.在Views檔案夾下建立Account檔案夾,然後將新的應用程式中Account檔案夾中的四個視圖模板檔案拷貝進來。
拷貝完畢後的方案總管應該7-1所示。
圖7-1 檔案拷貝完畢後的方案總管
修改AccountController.cs與AccountModels.cs檔案中的命名空間,將AccountController.cs檔案中 的命名空間修改為MvcBookStore.Controllers,將AccountModels.cs檔案中的命名空間修改為 MvcBookStore.Models。
7.2 使用ASP.NET設定網站追加一個管理員
在進行驗證訪問使用者是否為管理使用者之前,我們首先需要建立管理使用者。建立管理使用者的最簡單的方法是使用ASP.NET內建的設定網站。
點擊方案總管中7-2所示的表徵圖來登陸ASP.NET設定網站。
圖7-2 點擊表徵圖登陸ASP.NET設定網站
登陸之後,點擊首頁中的“安全”標籤。然後點擊“啟用角色”連結,7-3所示。
圖7-3 在ASP.NET設定網站中啟用角色
點擊“建立或管理角色”連結,7-4所示。
圖7-4 在ASP.NET設定網站中建立角色
在新角色名稱文字框中輸入角色名稱“管理員”,然後點擊“添加角色”按鈕。7-5所示。
圖7-5 在ASP.NET設定網站中添加管理員角色
點擊“上一步”按鈕,然後點擊左邊的“建立使用者”連結。7-6所示。
圖7-6 在ASP.NET設定網站中建立使用者
在左邊的輸入文字框中填入類似如下表中所示的資訊。
文字框 |
值 |
User Name |
admin |
Password |
password& |
Confirm Password |
Password& |
E-mail |
(填入一個郵件地址) |
Seurity Question |
(填入任意內容) |
Security Answer |
(填入任意內容) |
為這個使用者選擇管理員角色,然後點擊“建立使用者”按鈕,7-7所示。
圖7-7在ASP.NET設定網站中建立使用者
這時,你將看見一條資訊,標識該使用者已被建立成功。
圖7-8 標識使用者建立成功的資訊
現在你可以將這個瀏覽器視窗給關閉掉了。
7.3 基於角色的使用者驗證
現在我們可以使用[Authorize]屬性來限制只有管理員可以訪問StoreManager控制器了。代碼如下所示。
[Authorize(Roles = "管理員")]
public class StoreManagerController : Controller
{
// Controller code here
}
請注意,[Authorize]屬性即可以用來限制對於整個控制器的訪問,也可以用來限定對於控制器中某個action方法的訪問。
現在訪問“/StoreManager”URL地址時,會首先出現一個登陸對話方塊,7-9所示。
圖7-9 訪問StoreManager控制器必須首先要求登陸
使用我們建立的使用者身份進行登陸,將可以繼續看見書籍列表畫面。