2017-03-28 70 views
0

我想在ASP.NET Web窗體使用C#開發Web應用程序,我已經看到無處不在,我可以在互聯網上,但我發現沒有解決問題的方法。我試過編輯默認的Web應用程序模板,以限制用戶訪問任何頁面,如果用戶沒有登錄。默認頁面應該是登錄頁面,如果用戶點擊其他任何內容,他/她必須是重定向到登錄頁面。使用MVC比較容易,只需web.config上的一點代碼,但我不知道該怎麼做在web表單中重定向用戶登錄,如果沒有登錄ASP.NET Web窗體使用C#

這是我的web.config目前包含的內容。

<?xml version="1.0"?> 
<configuration> 

    <location path="Manage.aspx"> 
    <system.web> 
     <authorization> 
     <deny users="?"/> 
     </authorization> 
    </system.web> 
    </location> 

</configuration> 

在哪裏我需要改變?

+0

你還沒有真正指出你的問題,但從我所做的,有兩件事情。您需要將config 設置爲一般配置,而不僅僅是任何頁面。其次,您可能需要在配置文件中定義登錄路徑。 – Sami

+0

我只是想創建一個基於成員角色的Web應用程序,用戶需要先登錄才允許用戶查看網站中的內容。如果該人未註冊,則系統將不允許查看內容,並且將首先重定向用戶登錄。請注意,用戶不能自行註冊,他需要聯繫管理員進行註冊。 –

+2

請不要破壞你的帖子。一旦你發佈了一個問題,它就一般屬於Stack Overflow社區(根據CC BY-SA許可證)。如果您想取消關聯此帳戶與您的帳戶的關聯,請參閱[關於解除關聯請求的正確路由?](https://meta.stackoverflow。com/questions/323395/what-is-proper-route-for-a-dissociation-request) –

回答

0

你想要什麼的最短路徑是使用forms authenticationlogin URL,在那裏你會加入這樣的事情你的web.config:

<authentication mode="Forms"> 
    <forms loginUrl="login.aspx" /> 
</authentication> 

窗體身份驗證機制就會發出一個cookie到用戶在登錄時如果他們嘗試訪問沒有cookie的頁面,或者cookie已經過期,則該站點將通過FormsAuthenticationModule檢測到該頁面,該頁面檢查訪問該站點的每個請求。如果用戶未通過身份驗證,它將自動發出重定向到您指定的loginUrl(在我的示例中爲login.aspx)。

如果您使用其他身份驗證方法,則可以使用類似的方法。在幾乎所有情況下,都會有一些機制查找指示用戶已登錄的cookie。

+0

對不起,只是有點困惑,我在哪裏粘貼該代碼?我是否刪除了web.config中的原始代碼,這是默認情況下自啓動應用程序以來的代碼? –

+0

請按照第一個鏈接。 –

+0

我收到以下錯誤: 解析器錯誤消息:在應用程序級別之外使用註冊爲allowDefinition ='MachineToApplication'的節是錯誤的。此錯誤可能是由於虛擬目錄未被配置爲IIS中的應用程序。

-1

嗯....好吧客戶可以通過另一種方式做到這一點,首先 在登錄頁面,在後面的代碼(C#代碼不是HTML) 必須創建這樣

Session["user"] = username; 

會話您必須在將用戶重定向到您網站上的任何頁面之前創建會話 ,現在您使用用戶名或電子郵件創建了會話,無論您想在會話中存儲什麼內容,都必須檢查網站上每個頁面中的會話在 後面的代碼中的Page_Load方法來檢查你是否這樣做的會話

protected void Page_Load(object sender, EventArgs e) 
     { 
      if (Session["user"] == null) 
       Response.Redirect("login.aspx", true); 
     } 

其中「login.aspx的」在你的網站上的網頁,用戶將重定向到如此,現在,如果Session["user"]爲空,服務器將去「只是其中的一個代碼位」 和login.aspx的要清除註銷按鈕上的會話,你喜歡它

   Session.Clear(); 
       Session.Abandon(); 
       Session.RemoveAll(); 
+0

我是否需要在所有頁面中粘貼您的代碼?我的意思是,我不應該對web.config做任何更改嗎? –

+0

不會,你不會觸摸web.config –

相關問題