成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

程序員看淘寶,如何用Session保存用戶狀態

開發 后端
每個用戶都有一個Session對象相對應,當用戶想要跳轉到任意跟賬戶有關的界面(已買到的寶貝頁面),每個頁面加載的時候都要判斷Session對象保存的用戶狀態。

網上購物已經成為現在生活不可缺少的一部分。我們上淘寶只是為了消費,今天換一個角度,用程序員的眼光看看淘寶。

如上圖:

情況一:當打開一些和賬戶有關的網頁,檢測用戶沒有登錄,系統自動會跳轉到登錄界面。

情況二:當檢測到已經有用戶登錄,頁面會自動跳轉到目的頁面。

問題:系統如何檢測用戶是否登錄,如何保存用戶的登錄狀態?

下面說說自己的理解:利用Session保存用戶狀態,

解決方案一:每個用戶都有一個Session對象相對應,當用戶想要跳轉到任意跟賬戶有關的界面(已買到的寶貝頁面),每個頁面加載的時候都要判斷Session對象保存的用戶狀態。

1. 登錄界面的代碼:

  1. public partial class Login : System.Web.UI.Page  
  2.    {  
  3.        protected void Page_Load(object sender, EventArgs e)  
  4.        {  
  5.        }  
  6.        protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)  
  7.        {  
  8.            Session["UserFlag"] = false;//首先設置會話值UserFlage表示用戶是否登錄  
  9.            if (UserVolidate(Login1.UserName, Login1.Password) == true)//調用自定義方法,驗證用戶是否登錄成功  
  10.            {  
  11.                Session["UserFlag"] = true//登錄成功  
  12.                e.Authenticated = true;  
  13.                Response.Redirect("Main.aspx"); //跳轉主界面  
  14.            }  
  15.            else{  
  16.                Response.Write("未登錄"); //否則提示未登錄  
  17.            }  
  18.        }  
  19.        /// <summary>  
  20.        /// 用戶登錄驗證  
  21.        /// </summary>  
  22.        /// <param name="userName">用戶名</param>  
  23.        /// <param name="userPassword">用戶密碼</param>  
  24.        /// <returns>bool</returns>  
  25.        private bool  UserVolidate(String userName, String userPassword)  
  26.        {  
  27.            //連接數據庫  
  28.            SqlConnection con = new SqlConnection("server=.;database=User;uid=sa;pwd=123456;");  
  29.            con.Open();  
  30.            SqlCommand cmd=new SqlCommand ("select * from UserInfo where UserName="+userName +" and Password="+userPassword );  
  31.            int num=cmd.ExecuteNonQuery ();  
  32.            if (num>0)  
  33.            {  
  34.               return true;  
  35.            }  
  36.            else 
  37.            {  
  38.                return false;  
  39.            }  
  40.        }  
  41.          
  42.    } 

2. 跳轉界面的代碼:(防止用戶通過URL直接跳轉到該界面,每次界面都要進行判斷)

  1. public partial class Main : System.Web.UI.Page  
  2.    {  
  3.        //窗體加載  
  4.        protected void Page_Load(object sender, EventArgs e)  
  5.        {  
  6.            //根據Session對象保存的用戶登陸狀態判斷用戶是否登錄  
  7.            if (Session["UserFlag"].ToString () == "false")  
  8.            {  
  9.                //如果未登錄,則直接跳轉到登錄界面  
  10.                Response.Redirect ("Login.aspx");  
  11.            }  
  12.        }  
  13.    } 

解決方案二:通過提供一個中介judge.aspx界面,每個跟賬戶有關的界面跳轉之前都跳轉到該界面,通過該界面加載的時判斷用戶的登錄狀態。

1. 登錄頁面代碼不變

2. judge.aspx頁面代碼:

  1. public partial class judge : System.Web.UI.Page  
  2.     {  
  3.         protected void Page_Load(object sender, EventArgs e)  
  4.         {  
  5.             //對Session對象進行判斷用戶的狀態  
  6.  
  7.             if (Session["flag"].ToString()=="false")  
  8.             {  
  9.                 Response.Write("未登錄");  
  10.             }  
  11.  
  12.             /*else  
  13.             {  
  14.                 Response.Redirect("Main.aspx");//加上這句話會造成死循環  
  15.             }*/ 
  16.         }  
  17.     } 

3. 跳轉界面代碼:

  1. public partial class Main : System.Web.UI.Page  
  2.     {  
  3.         protected void Page_Load(object sender, EventArgs e)  
  4.         {  
  5.             //跳轉頁面必須經過判斷,防止直接登錄該頁面,而不進行登錄。  
  6.             Server.Execute("judge.aspx");//通過執行Server對象的Execute方法  
  7.         }  
  8.     } 

總結:兩種解決方案原理相同,通過Session對象保存用戶狀態,不同頁面都可以通過訪問該用戶的Session對象的會話值來判斷該用戶的狀態。解決方案二只是簡化了判斷過程,通過Server對象的Execute方法先執行中介判斷界面,然后回歸到原程序執行順序。

補充:

Server對象

語法:Server.Execute(path)

用途:這個方法是 IIS5.0 新增的功能,用途類似程序語言中的函數調用,也就是說,您可以在 ASP 程序中使用 Server.Execute(path)方法調用 Path 指定的 ASP 程序,待被調用的程序執行完畢之后再返回原來的程序,繼續執行接下來的指令。

Session對象

在網站中,每個新訪問的用戶都將產生自己的session(回話)對象。這個session對象在服務器端進行管理,只能為當前訪問的用戶服務。如果另一個用戶進入網站,也將擁有自己的session對象,兩個用戶的session對象即使同名,也不能共享。

原文鏈接:http://blog.csdn.net/yinjingjing198808/article/details/7832769

【編輯推薦】

  1. 各自為政:ASP.NET實現團隊分工的思考
  2. 仿造百度實現基于Lucene.net全文檢索
  3. 發布一個自己寫的企業站源碼
  4. ASP.NET中常用的幾種身份驗證方式
  5. ASP.NET中使用App_Code文件夾的異常
責任編輯:張偉 來源: yinjingjing198808的博客
相關推薦

2016-04-28 11:17:33

互動出版網

2018-01-09 20:29:15

程序員日本程序員中國程序員

2011-05-10 13:37:53

程序員

2011-05-30 13:43:16

OOD編程對象

2012-09-20 09:19:30

程序員非程序西方程序員

2012-09-19 09:21:59

2012-11-12 09:35:24

開發工具程序員IE6

2011-05-30 14:23:11

設計模式程序員

2011-07-19 13:04:22

網絡協議網絡編程

2019-01-18 09:32:57

2013-12-30 10:08:13

2020-09-23 12:30:26

session

2010-10-18 11:18:44

程序員

2014-09-22 09:42:54

程序員

2014-03-04 09:43:23

程序員外包

2020-04-04 20:59:28

程序員技術開發

2015-04-09 13:36:13

程序員大齡程序員出路

2012-03-06 09:22:46

程序員

2013-08-20 09:33:59

程序員
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天综合久久 | 日韩乱码一二三 | 国内精品视频在线观看 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | 不卡的av一区 | 色视频网站在线观看 | 国产亚洲一区二区三区在线观看 | 国产精品免费一区二区三区四区 | 亚洲一区二区三区在线 | 亚洲免费在线 | 日韩欧美中文 | 一区二区不卡 | 精品免费国产 | 成人高清网站 | 日韩精品视频在线观看一区二区三区 | 欧美激情一区二区三区 | 精品一区二区三区在线视频 | 国产精品福利在线观看 | 日韩精品一区二区三区在线观看 | 日韩欧美亚洲 | 成人精品鲁一区一区二区 | 久草.com| 久久精品99 | 狠狠草视频 | 成人久久久久 | 国产在线视频在线观看 | 日本不卡一区二区三区在线观看 | 免费一区二区三区 | 在线观看黄免费 | 欧美一区免费在线观看 | 成人在线国产 | 国产高清免费视频 | 欧美中文字幕一区二区三区 | 国产在线小视频 | 久久99精品国产 | 亚洲精品美女在线观看 | 日韩成人在线免费观看 | 中文字幕亚洲精品 | 国产97在线视频 | 亚洲一区二区精品视频在线观看 | 国产精品毛片在线 |