簡體   English   中英

具有ASP.Net Web應用程序的SimpleMembership(沒有MVC,沒有RAZOR。只是標准的.net Web項目)

[英]SimpleMembership with ASP.Net Web application (NO MVC, NO RAZOR. Just standard .net web project)

我在項目中無法實現SimpleMembership。 基本上,我無法找到有關限制訪問頁面的任何信息。 到目前為止,這是我所做的:

  1. 我的登錄頁面名為default.aspx。 通過將其添加到web.config中,我已經能夠將SimpleMembership配置為將default.aspx識別為我的登錄頁面:
 <appSettings> <add key="loginUrl" value="default.aspx" /> </appSettings> 
  1. 我的default.aspx中有一個WebMethod,用於通過WebSecurity.Login驗證用戶憑據。 我通過jquery ajax調用WebMethod:
 [WebMethod, ScriptMethod] public static bool Login(string userName, string password) { return SecurityManager.Instance.Login(userName: userName, password: password); } 
  1. 在我的jquery代碼的ajax成功處理程序中,我將用戶重定向到另一個應該保護的頁面(home.aspx):
 success: function (data, textStatus, jqXHR) { if (data.d) { window.location.href = "home.aspx"; } else { $("#invalidCredentialsBox").css("visibility", "visible"); } }, 

問題是,如果我嘗試直接(從瀏覽器)訪問home.aspx,則會自動加載。 因此,如何使SimpleMembership限制對home.aspx的訪問,直到用戶成功登錄為止?

我必須要做的是,雖然不知道這是否是正確的解決方案,但它是在app_code文件夾中創建基類。 該類繼承自System.Web.UI.Page ,然后更改了home.aspx以從該基類繼承。 在基類的構造函數中,我正在檢查WebSecurity.IsAuthenticated屬性,如果它為false,則執行Response.Redirect到我的error.aspx頁面:

 namespace MyProject { public class BasePage : System.Web.UI.Page { public BasePage() { if (!SecurityManager.Instance.IsAuthenticated()) { HttpContext.Current.Response.Redirect("error.aspx"); } } } } 

這樣,它可以工作,但是我不認為這是實現它的正確方法。 我發現的所有示例都使用MVC,但我不是,實際上我對MVC幾乎一無所知。 可以請別人給我一些想法或向我指出在.net Web項目中使用SimpleMembership的相同文檔/示例嗎?

另外,我可以添加到web.config的appSettings部分的S​​impleMembership還有哪些其他有效屬性? 而且,如何設置web.config的身份驗證部分以與SimpleMembership一起使用(我在MVC 4模板中看到,即使它使用SimpleMembership,它仍會在web.config中設置表單身份驗證部分)

謝謝。

不要將授權與身份驗證混淆。

授權決定誰有權訪問什么。

您可以如下設置

<authorization>
  <allow users="Kim"/>
  <allow roles="Admins"/>
  <deny users="John"/>
  <deny users="?"/>
</authorization>

參考: Asp.net授權

成員資格提供者負責身份驗證 它的責任只是確認用戶就是他聲稱的身份。

如果您網站的一部分需要不同的授權規則,例如登錄頁面,默認頁面或每個人都可以訪問的公用文件夾,則可以使用location元素為其創建一個部分。

即使站點的其余部分受到限制,這也將允許所有用戶訪問Logon.aspx。

   <location path="Logon.aspx">
      <system.web>
         <authorization>
            <allow users="*"/>
         </authorization>
      </system.web>
   </location>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM