之前提過會員登入、權限控管的問題,請參考本文--- FAQ--會員登入、會員專屬網頁、會員修改私人資料,怎麼寫? 基本的觀念,都在這篇文章中講過了。

在我的書(上集),第十六章(狀態管理)也有相關範例。詳見本書 16-2-516-2-6這兩節的範例。

 

因為有讀者來問,我順手寫一個簡單範例來作。

 

我是採用最傳統的作法,以 Session來作。

這個作法雖然傳統,但是「千年傳統,全新感受」!


圖片來源:cape7.pixnet.net/blog/post/18929149 電影 海角七號官方網站

 

這個作法有什麼好處呢?

1. 簡單好用,不會受限於別人寫好的功能(例如:ASP.NET提供的 Login控制項與相關的 Table,很多人不知道怎麼去修改他)

2. 這個方法,不管是ASP、JSP、PHP也都可以用,是網頁程式裡面一個「通用」的好範例。

你要學一個「只有ASP.NET才能用的方法?」,還是所有網頁程式都能用的方法?

 

我的書上沒有提到 Login控制項,也敢拿出來賣。 我相信我有我的招數可以做出相同的東西。

而且可以讓讀者「用得更久」、「用得更靈活」

===================================================================

首先,要先設計一個會員專屬的資料表(Table)

 

欄位名稱 資料格式 備 註
id int 會員編號(自動編號)
name nvarchar(50) 帳號
password nvarchar(50) 密碼
rank nvarchar(50) 權限。
我以數字來當作權限,數字越大,權限越高。
email nvarchar(50) 忘記密碼,可以透過E-Mail通知他

 

第一個畫面(User_Login.aspx),是輸入帳號、密碼。

這個畫面的功能,我想每個人都會吧~

如果你連這個畫面都不會作,那應該買本書從頭學起。

這些範例都是我送給讀者,作為「課後補充」、「售後服務」,不是寫給毫無基礎的人看的。

這些沒講到的部份,書裡通通有!

畫面上有兩個功能,

第一,登入以後,會比對資料庫。帳號、密碼都沒有錯誤。 便會發給一個Session,作為通關鑰匙!

20分鐘內,這把通關鑰匙都會一路順暢。沒有這把鑰匙的話,就算你知道網址URL也進不去!

這一部份,就是書本內 16-2-516-2-6這兩節的範例。 請您務必把書裡面的基礎讀熟了

啊~ 學網頁程式,沒聽過 Application、Session、Cookie.....那不用學了。

這個範例,我用了三個 Session。

    一個是 Session("Login"),用來作為通關的鑰匙(會員區裡面的每個網頁,defense.aspx都會檢查它)。

    另外兩個分別是:Session("U_Name")記錄會員姓名。 Session("u_Rank")記錄會員的「權限等級」。

 

註解:Session的寫法可以改用OOP的屬性來做,更簡潔有力。

請看Allen Kuo文章:http://www.allenkuo.com/EBook5/view.aspx?a=1&TreeNodeID=123&id=978

 

 

第二,忘記密碼的話,我會透過 E-Mail告訴你。這部份算是新增的功能,書上來不及講

是採用 System.Net.Mail 命名空間的用法,

您也可以參考微軟的範例,照抄就能用囉~ http://msdn.microsoft.com/zh-tw/library/system.net.mail.mailmessage(VS.80).aspx

 

在會員登入的畫面,我寫了幾行程式,防範 SQL Injection的攻擊。

只是防堵對方輸入「--」SQL指令的註解符號,與1=1這種模稜兩可的陳述句而已。 寫得不好,請見諒。

========================================================================================

 

接下來,就進入「會員區(User_List.aspx)」。

因為有 Session的保護,就算你直接打網址URL,也會被我阻擋下來。

這部份的原因,就是書本裡面 defense.aspx這個小程式在幫忙。 原理很簡單,16-2節通通在講這些內容。

這支程式的HTML碼,最上面記得加入 defense.aspx

唯一的重點,就是 defense.aspx這個小程式,在防堵外人直接 Kry in網址(URL),直接闖入會員專屬網頁。

 

畫面的執行成果如下:

上面這個程式,完全沒有寫後置程式碼。

因為都是靠畫面上的元件,設定一下就能完成囉。

GridView的花樣很多很多,為了有足夠的範例來給大家練習,我一寫就是五大章,將近250頁。

 

GridView的欄位,設定上有一些重點(如下圖)

「文章 id編號」,一點選就會連到下一個網頁(User_Edit.aspx)去作修改。

這個設定,請看本書 9-1節,有一個很類似的範例。

=============================================================================

第三個畫面,修改文章內容(User_Edit.aspx)。

1. 你必須權限夠大,例如: Rank =3,是站長等級,才能修改所有文章。

2. 你必須是這篇文章的作者,才能修改他的內容。 (這部份我寫得不好啦,請見諒~)

除此之外,都會出現「權限不足」的警告訊息,一腳把你踢開!

 

當然,本程式的最上方,仍要加入 defense.aspx來防堵

 

FormView + SqlDataSource的部份,有一個設定重點

因為上一支程式,是透過「超連結」過來的,所以在 SqlDataSource的設定畫面中,「Where子句」必須設定如下:

 

第三支程式 (User_Edit.aspx)的執行成果如下:

這裡我使用 FormView來修改文章內容,只要根基打得穩,熟悉 GridView的「樣版」,

FormView根本不用學,自然就會作。 還很精通勒!

因為 FormView我們只用來編輯資料,所以預設的畫面,請設定為「Edit 」Mode(如下圖)

用不到的樣版,例如:ItemTemplate可以自己刪除,因為不會用到資料展示與呈現的樣版

SqlDataSource自動產生,但用不到的指令,例如:資料新增,InsertCommand 也可以刪除。

 

 

 

 

 

 

 

GridView的花樣很多很多,為了有足夠的範例來給大家練習,我一寫就是五大章,將近250頁。

原因就在此:與其什麼控制項,都學一點點皮毛而已,不如全力精通一樣!

然後功力倍增以後,就能舉一返三!

請看我這篇文章:[入門]以初學者來看,ASP.NET的GridView可以學到什麼?

 

 

===============================================================================

再一次強調:

這些範例、習題,都是給本書的讀者作為課後補充。

有些也是讀者寫信來問,我用範例重新說明一次。

不是給「毫無基礎」的初學者看的。

如果您真的毫無基礎,又不願意學,就算程式送給你,你都不會改、裝不上去。

 

No Pain, No Gain......現在景氣差成這樣,工作拼命裁員。我相信寫程式的人最不受影響!

就算沒工作,自己在家接案子、寫書、去補習班教學.....,都能有一線生機

資訊系統的外包、小包,真的是永遠作不完的案子!

 

 

 

今天,我認真花一兩個月,好好看完一本書、上完一門課,自己回家後,一定要認真練習幾次

學到的東西很難被取代!

將來,別人(競爭者)要進入這個領域,是不是也要受同樣的苦呢? 這種進入障礙,就是我們最大的保障!

 

如果範例湊得夠多,我會推出一本「ASP.NET的範例集」,[出書計畫] ASP.NET範例集、問題集

 

 

本文範例(VB語法),由此下載 ----- 會員登入與權限.rar

defense.aspx請參閱本書內容,請自己稍作修改。

這三支程式,後置程式碼都很短。我相信用功的讀者,有把書本內容看過,就會看得懂。

我刻意分成三個程式來作,在流程上,可以區隔得比較明顯。

 

這個範例很淺,我是順手寫出來的,如果有什麼不周到的地方,請見諒!

最重要的是告訴讀者:這一套流程、防堵措施,大概是這樣使用的。這才是重點!程式碼根本沒什麼~

 

這三支程式會用到書本的章節如下:

  • GridView的部份(Ch8 / Ch9)、
  • ADO.NET的部份(Ch14的14-1節)、
  • 狀態管理(Session)的部份(Ch16的16-2節)。

 

............................................................................................................................................................................................

2009/1/14補充

把上面的會員登入功能,改成Web Service版本,請看:Web Service入門 #6,統一管理帳號、密碼的登入

 

............................................................................................................................................................................................

2011/9/19補充

會員登入、會員專屬網頁、會員修改私人資料,怎麼寫?(#3)使用者登入後(新增、刪除、編輯)各種動作的權限

http://www.dotblogs.com.tw/mis2000lab/archive/2011/09/19/session_login_user_right_20110919.aspx

 

................................................................................................................................................

如果您不想學傳統的 Session來管理,ASP.NET 2.0起,也有自己的會員登入機制

請看這篇文章:

會員登入 與 FormsAuthentication (Web.Config裡面的 authentication mode="Forms")

................................................................................................................................................

 
另外一種好作法可以參考   topcat撰寫的 -- [範例]ASP.NET使用Session驗證練習範例

 

 

 

好久沒有貼今日值班正妹了................................

 

 

 

 

 

 

 

 

 

安、海瑟威(演過「穿著Prada的惡魔」、「斷背山」是好萊塢最熱門的甜姐兒。人很瘦而且身材超辣)


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
 

我將思想傳授他人, 他人之所得,亦無損於我之所有;

猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson

 

 

......... 寫信給我,mis2000lab (at) yahoo.com.台灣 .....................................................................................

................   facebook社團   https://www.facebook.com/mis2000lab   ............................

................   Google+   https://plus.google.com/100202398389206570368/posts ..............

................  YouTube (ASP.NET) 線上教學影片  http://goo.gl/rGLocQ

 

書本上面的範例,一定有 VB / C#雙語法給您學習。          請看我們的「售後服務」範圍(嚴格認定)

 

防範SQL Injection / XSS攻擊,請看:ASP.NET安全寫作    資料來源 -- TWISC@NTUST網路應用安全知識庫

......................................................................................................................................................


 

......................................................................................................................................................

 

(1). 我是初學者、要從頭學起、學習 [各種]控制項,瞭解ASP.NET生命週期與變革,請上這一班:

                                     *** 班班額滿,切莫遲疑!****

         

 

      ***確定開班***  ASP.NET 遠距教學,免出門,在家上課   上課時,老師 親自 線上講解!並非事先錄影!
      


 

[遠距教學、教學影片] ASP.NET (Web Form) 六週課程 上線了!微軟MVP --MIS2000Lab.主講

事先錄製好的影片,並非上課時側錄!   觀看影片時,有如我「一對一」跟您面對面講課


          MIS2000 Lab.  線上教學影片(YouTube)
         

 

(2). Muki Wu的 Responsive Web Design(響應式網頁)設計講座。一日課程。

          

 

(3). 架構設計好簡單 - 快速從Web Form 到ASP.NET MVC(講師:Gelis)

     

 

(4). Allen Kuo -- ASP.NET「物件導向(OOP)」班 -- 打通任督二脈,晉升高手行列

         

 

 

(5). Amos + Muki 雙講師聯手出擊!前端設計 36 hr 實戰課程 (HTML + CSS + jQuery)

 

(6). KK Bruce 陳傳興 -- ASP.NET MVC 5 七週實戰

          

 

(7). Will 保哥,大名鼎鼎的微軟研討會講師。ASP.NET MVC -- 六週實戰,保證過癮!

         

 

 

............................. 寫信給我,mis2000lab (at) yahoo.com.台灣.........................................................