簡體   English   中英

使用帶有重寫URL的表單身份驗證/授權

[英]Using Forms Authentication/Authorization with Rewritten URLs

我正在使用一些重寫URL進行快速沙盒測試(例子來自Scott Guthrie的博客)和表單身份驗證/授權。

我的設置非常簡單。

~/View/(\d{1,6})      =>      ~/Public/View.aspx?ContentID=$1

~/Buy/(\d{1,6})       =>      ~/Private/Purchase.aspx?ContentID=$1

我已經確認URL重寫正在通過單獨瀏覽以下各項來工作

接下來,我開始為Web.Config中的這兩個目錄啟用表單身份驗證/授權。 設置如下

  <location path="Private">
    <system.web>
      <authorization>
        <deny users="?" />
      </authorization>
    </system.web>
  </location>
  <location path="Public">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location> 

當我瀏覽到2個原始URL(.aspx)時,這種方法非常有效,但當我瀏覽到URL重寫版本時,它根本不會觸發。

我試圖單獨為Buy添加<location>部分,但這仍然無法導致授權/身份驗證模塊啟動。

可能這是因為它沒有將這些URL視為ASPX資源...我可以通過使重寫器規則查找來解決它

    <LookFor>~/Buy/(\d{1,6})\.aspx</LookFor>

即強制重寫的版本最后有一個ASPX,但這看起來很難看。 無論如何都要讓Auth處理程序為任何URL類型觸發,無論擴展名(或缺少擴展名)

要使用內置身份驗證,您必須根據原始“原始”URL或重寫的URL來決定是否要進行身份驗證。 看起來好像您正在使用的URL重寫器已在執行身份驗證后連接到事件,這就是為什么只遵循“公共”和“私有”文件夾規則的原因。 如果要根據重寫的URL進行身份驗證,則必須使用連接到早期事件(例如BeginRequest)的重寫器以及使用重寫的URL更新web.config。

或者,您可以插入自己的身份驗證提供程序,並執行諸如檢查重寫和原始URL之類的奇特事情,但這對於沙盒測試站點來說可能有點過分。

有關更多信息,請參閱此文章:

http://msdn.microsoft.com/en-us/library/ms972974.aspx

我希望這有幫助。

在ASP.NET 4.0中(我相信它在3.5 SP1中),包含了一個新的路由功能。 使用此路由功能的好處是現在可以直接在ASP.NET中支持它,因此您可以指定在執行路由時,它應該遵守實際.ASPX文件的授權設置。

因此,我建議您調查是否可以實現此路由功能。

它不清楚你使用的url重寫庫,但從我認為它可能urlrewriter.net的東西的外觀,但我沒有看到任何標記?

嘗試對所有請求啟用formauthentication和authorization。 默認情況下,它僅對.aspx等asp.net請求啟用。 可以在IIS(7)中完成,也可以直接在webserver / modules部分的web.config中完成

<system.webServer>
   <modules>
        <remove name="FormsAuthentication" />
        <add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" preCondition=""/>
        <remove name="UrlAuthorization" />
        <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" preCondition="" />
   </modules>
</system.webServer>

暫無
暫無

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

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