其實我們學習的第一個頁面是登陸,第二個才是註冊
但是為什麼老師要這樣呢?
可能是為了在登陸頁面給我們介紹,儲存登陸狀態吧,我也在這裡回顧一下吧
儲存登陸狀態需要調用到一個命名空間,即using system.Web.Security
在其有一個類FormsOuthentication,其下面的兩個方法都可以儲存登陸狀態,
第一個是GetAuthCookie(a,b)
此方法是只用來儲存登陸狀態,而它有兩個參數a和b
a是儲存的登陸資訊,而b為一個bool值,當b為true時,瀏覽器會記住此次登陸資訊,所以
下次登陸時,會直接以這次儲存的登陸資訊進行登陸,此時由於上次的登陸資訊,此次訪問為授權訪問
而如果b為false的時候,瀏覽器將不會記錄此次你的登陸資訊
第二個方法是RedirectFromLoginPage(a,b)
此方法不僅用來儲存登陸狀態,而且還有一個作用就是跳回被攔截的頁面
我的意思說,假如你現在是匿名訪問一個(部落格),你沒有帳號,但是你又要進行一個發表文章的操作
此時,此方法就會阻止你進入發帖頁面,而跳轉到一個頁面讓你進行登陸,當你輸入登陸資訊後,你就是一個
授權訪問發帖頁面的訪問者,所以會自動跳轉到你一開始想進入的發帖頁面,而b也是跟上面一樣,一個bool值
具體作用跟上面的是一樣的,好啦,介紹這兩個方法,那麼就開始進行登陸頁面的設計吧
還是老套路,預存程序→封裝方法→調用方法
建立一個預存程序Login
Alter Procedure dbo.Login
(
@UserName varchar(50),
@Password varchar(50)
)
AS
select * from UserTable where UserName=@UserName and Password=@Password
封裝到一個方法中
public SqlDataReader Login(string user,string pwd)
{
sqlconnection conn=new sqlconnection(sqlconn);
sqlcommand comm=new sqlcommand("Login",conn);
comm.commandtype=commandtype.storedprocedure;
comm.parameters.add("@UserName",user);
comm.parameters.add("@Password");
conn.open();
sqldatareader dr=comm.excutereader(commandbehavior.closeconnection);
return dr;
}
aspx頁面調用方法
以下代碼寫在Button事件中
ConDB cdb=new ConDB();
sqldatareader dr=cdb.Login(user.text,pwd.text);
if(dr.Read())
{
FormsOuthentication.GetAuthCookie(user.text,b);這個b的值其實在設計介面的一個單選框裡面的一個文本對應
bool的值
Response.redirect("Index.aspx");
}
else
{
response.redirect("使用者名稱或密碼錯誤");
}
哎,終於寫完了,有些地方還有點不完善,呵呵 下次有時間改吧,我的項目還要趕時間做起來呢 哈哈