iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 20
2
Modern Web

跨平台開發利器- ASP.NET Core 系列 第 20

(Day 20) ASP.NET Core的驗證機制 - 下篇

  • 分享至 

  • xImage
  •  

  昨天,我們討論了如何用程式來建Role,也把使用者和Role的關聯建起來了,那麼,我們怎麼利用Role來控制使用者在網站中的權限呢?
  今天讓我們來實作一下網頁如何配合驗證和角色,提供有權限控管機制的網站。
  我們先建個新的控制器。如下圖:
https://ithelp.ithome.com.tw/upload/images/20181025/200176495PmfTi0oio.png
  選擇空白控制器。
https://ithelp.ithome.com.tw/upload/images/20181025/20017649ekPEvpWTTC.png
  輸入控制器的名稱,例如AdminController:
https://ithelp.ithome.com.tw/upload/images/20181025/2001764969OTfwzA0D.png
  建好控制器後,來建個簡單的網頁,也就是檢視網頁,就用預設的Index來建新的View吧。如下圖在Controller檔案中,游標指向Index上按右鍵:
https://ithelp.ithome.com.tw/upload/images/20181025/20017649YDMYtCkxSb.png
https://ithelp.ithome.com.tw/upload/images/20181025/20017649BjtcRML588.png
  然後在[新建MVC檢視]對話窗中,直接按下[新增]把檢視建好,這時[方案總管]看來如下圖:
https://ithelp.ithome.com.tw/upload/images/20181025/200176496ZQTnl601P.png
  接下來,先修改主版頁面,在功能表上添加新的Controller的進入點,如下修改_Layout.cshtml的程式碼:
https://ithelp.ithome.com.tw/upload/images/20181025/20017649z2mMYW1Un2.png
  最後修改Index.cshtml檢視網頁的程式如下:
  (是原來的樣子)
https://ithelp.ithome.com.tw/upload/images/20181025/20017649EkkVjilE47.png
  (這是修改後的樣子)
https://ithelp.ithome.com.tw/upload/images/20181025/20017649uIQHvi5Q5n.png
  改完後,我們執行網站。如下圖,功能表上出現了Admin Page。
https://ithelp.ithome.com.tw/upload/images/20181025/20017649FgPSsuQCIg.png
  先不登入,點選Admin Page,Admin Page網頁出現,如下圖:
https://ithelp.ithome.com.tw/upload/images/20181025/200176490jNJKGudqV.png
  可是,怎麼沒登入也能看到Admin Page,這網站豈不門戶大開?
  先把網站關閉,打開AdminController.cs,然後在其中添加Role的控制,如果使用者屬於"Admin"角色才能執行Index.cshtml檢視網頁:
https://ithelp.ithome.com.tw/upload/images/20181025/200176496Zvw03tN1v.png
  很簡單的一行指令。程式碼打好後,再執行網站,然後點選Admin Page,這回直接跳到登入網頁去了。可見,系統會自動判斷使用者是否屬於角色Admin,如果還沒有登入,會自動導向登入頁面。
https://ithelp.ithome.com.tw/upload/images/20181025/20017649CW9uIpaB3f.png
  那麼,我們可以控制功能表上的表單選項,按照使用者所屬角色來控制出現與否嗎?也就是Admin Page這個功能表,在使用者屬於Admin角色才會顯示出來?
  當然可以,我們在主版頁面中如下圖修改:
https://ithelp.ithome.com.tw/upload/images/20181025/20017649CmKiw87q2X.png
  再次執行網站,可以看到Admin Page的功能表消失了,這是因為尚未登入,一旦登入完成,Admin Page的功能表就出現了。
https://ithelp.ithome.com.tw/upload/images/20181025/20017649gSt6FTs1sy.png
https://ithelp.ithome.com.tw/upload/images/20181025/20017649N6LMRM6FIv.png
  談到這裏,各位應該可以學了自行在系統中添加Role和指定使用者所的Role,以及寫些控制程式碼來控制網站功能配合Role來進行權限制管。


上一篇
(Day 19) ASP.NET Core的驗證機制 - 中篇
下一篇
(Day 21) 像蟑螂一樣的JavaScript
系列文
跨平台開發利器- ASP.NET Core 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言