2016-04-22 122 views
1

我是一個新的蜜蜂,爲我的應用程序創建一個asp.net Web應用程序。我將有不同的用戶,我沒有使用任何特殊的形式或方法來進行登錄。我有訪問數據庫,在那裏我有一些用戶角色,公司,用戶名和密碼。 在我的登錄頁面通過文本框我會得到公司用戶名和密碼輸入的最終用戶。那麼我會檢查公司和用戶名(這是表中的主鍵),如果密碼匹配,則會查找用戶角色並重定向到每個用戶的頁面。 現在工作正常。 我有一個註銷按鈕,這是坐在SITEMASTER頁面和如何在網站上正確登錄

 <div id="logout" runat="server" visible="false" class="navbar-brand1"> 
        <a id="lo" runat="server" href="/Default">Log Out </a> 
      </div> 

然後在我想要顯示的註銷我將調用代碼

Master.FindControl("logout").Visible = true; 

它工作正常的網頁在登錄和註銷方面。但事實上,註銷按鈕只是重定向到網站的第一頁,如果我們在瀏覽器中做後退箭頭,我可以返回到前一頁。有沒有什麼辦法可以整齊地做到這一點,以便退出後,即使我回到瀏覽器,它會要求登錄。

任何幫助將非常感激。我犯了一個錯誤,並創建完整的應用程序,現在我擔心這個功能,所以技術上我沒有註銷:(

+1

當用戶登錄時,將用戶名設置爲會話變量。另外,當用戶打開系統中的每個頁面時,請檢查該會話變量是否爲空。如果爲空,則重定向到LogIn頁面。當用戶註銷清除會話。 –

+0

這似乎是一個好方法。你能否給我提供一些代碼。很多謝謝 –

+0

答案下面提供了示例代碼。 –

回答

1

每當用戶在下面的代碼系統使用打開一個頁面,以檢查會話是否有效

if (!IsPostBack) 
     { 
      if (Convert.ToString(Session["UserName"]).Length <= 0) 
      { 
       Response.Redirect("Login.aspx"); 
      } 
     } 

當用戶點擊按鈕SignOut,使重定向到SignOut.aspx頁面。在SignOut.aspx的表單加載事件中使用下面的代碼清除會話。

protected void Page_Load(object sender, EventArgs e) 
{ 
    Session.Abandon(); 

    Session.Contents.RemoveAll(); 

    System.Web.Security.FormsAuthentication.SignOut(); 

    Response.Redirect("Login.aspx"); 
} 
+0

你在哪裏設置會話[「用戶名」]值?所以它總是通過重定向去登錄頁面我猜? –

+0

您必須在登錄頁面中設置它。是的,當用戶註銷它將首先進入signout.aspx頁面,然後從那裏重定向到登錄頁面。 –

0

作爲@Chathuranga Ranasinghe提到我用會話varibale存儲用戶名的細節,我會檢查會話變量空然後去我的默認頁面,否則繼續。

if (((string)Session["iden"])) 
     { 
      Response.Redirect("/Default.aspx"); 
     } 

我用這個頁面上自帶登錄後,它對於我來說,現在工作得很好。

0

那麼,你的問題是如何做

正確登錄

正確的方法是不是推倒重來,而是使用內置在ASP.NET框架

https://msdn.microsoft.com/en-us/library/ms731049%28v=vs.110%29.aspx

它會給你很多額外的功能,如使用OpenAuth等

例 「https://msdn.microsoft.com/en-us/library/aa354509%28v=vs.110%29.aspx

+0

我知道還有其他方法可以做到這一點,但是我提到我已經完成了應用程序,我無法繼續工作,所以只需調整設置以保存來自網站的數據。 –