asp.net自己帶了乙個可以自動生成認證的類,但這個formsauthentication自動的cookie除了包含認證票據以外,不能自己帶其它的資料。
而對於乙個專案來說,可能要對瀏覽者進行不同型別的驗證,而對於asp的寫法來說,就是用session來驗證。我不喜歡這樣的方法,而且這樣的話也就不能實現自動登入了。
還好,.net裡帶了乙個可以自己定義票據的方法,這樣我們一方面可以進行自動登入,另一方面還可以對不用的使用者進行驗證。下面是乙個生成票據的**:
public virtual void login(bool i_autologin)
其中m_userdata可以是很長的字串,而且生成的cookies經過了加密(簡單的)。顯然,這裡只是會記錄一些使用者id,type等資訊,不會記錄密碼等重要資訊,當然也不會有什麼太大的問題。接下來就是如何取得cookies裡的資訊並且加以認證。
取回cookies:
protected void getdatafromcookie()}}
private void setuserdata(string m_data)
);if(m_string.length==3)
}顯然這裡我用了『,』來分隔使用者資訊,其中我新增了三條使用者資訊,一條為使用者id,一條為使用者名稱,最後一條為使用者型別。而且在取回資訊的時候,用它來給m_user物件賦值。
下面就是來驗證它了:首先寫乙個基類(basepage),以後所有的form都從它派生,這樣就可以自動驗證使用者了。它裡面寫乙個可過載函式,用於對不同的頁面進行判斷:
#region iuipage members
virtual public bool checkusertype()
virtual public void inituser(object sender, eventargs e){}
#endregion
而且在頁面載入的時候進行驗證:
public void basepage_load(object sender, system.eventargs e)
}而實現的驗證**在不同的頁面裡:例如乙個admin_main.aspx.cs裡,它的驗證可能是這樣的:
public override bool checkusertype()
public override void inituser(object sender, eventargs e)
而在client_main.aspx.cs裡可能是這樣的:
public override bool checkusertype()
public override void inituser(object sender, eventargs e)
這樣,頁面就可以自動登入,而且可以自動識別使用者型別了。本來我想再寫乙個類,把所有的admin頁面都從它繼承,可惜,vs.net2003裡面的乙個小bug,使得我這樣的做法失敗。而且basepage裡的驗證函式只能是可過載的,不能是虛擬的,否則還可以方便一點,算了,反正**也不是很長,每乙個頁面裡新增它就行了。
乙個form表單
charset utf 8 html例項title head html例項 form完整的表單h3 action 1.php method get 賬號 type text name uname value 帥帥好帥 密碼 type password name upass type email na...
遇到乙個antd中form驗證的奇葩問題
訪問github 問題?當把input元件設定為disabled的時候,驗證提醒還會出現,經過查詢api都無法完美解決,或者解決後會出現這樣或那樣的奇葩問題 解決 偽造乙個模樣一樣的元件,但要將rules屬性刪掉。給偽裝元件加乙個自定義的key 例項 demo import react from r...
Tkinter的第乙個Form
在python中的form生成很簡單,匯入tkinter的庫,一些少量的 就足夠了!我在 中加了詳細的注釋,看過 你就知道python的form程式應該如何使用了,今天給出是乙個最為簡單的form加上乙個text的lable顯示框,這個地方遇到了乙個小問題,就是國際化,中文注釋在python中不被識...