表单身份验证和路由的最佳做法?

时间:2010-09-23 14:31:27

标签: asp.net authentication routing

我的网站(WebForms,C#4.0)正在使用Forms Auth,默认情况下需要登录:

<authorization>
    <deny users="?"/>
</authorization>

我允许对公用文件夹(http://siteurl.com/member/public)进行未经身份验证的访问:

<location path="member/public">
  <system.web>
    <authorization>
      <allow users="?"/>
    </authorization>
  </system.web>
</location>

一切正常。然后,我添加了一个路由(RouteTable.MapPageRoute(...)),以便

http://siteurl.com/member/public/view.aspx?username=someusername

可以通过访问:

来访问
http://siteurl.com/member/view/someusername

我的问题是 - 现在我还需要向web.config添加成员/视图位置以允许unauth访问它,所以我必须在技术上有两个条目相同的位置:

<location path="member/public"> <!-- physical location -->
  <system.web>
    <authorization>
      <allow users="?"/>
    </authorization>
  </system.web>
</location>

<location path="member/view"> <!-- route -->
  <system.web>
    <authorization>
      <allow users="?"/>
    </authorization>
  </system.web>
</location>

我会在成员/公共文件夹中有一堆到那些路由的路由,所以看起来我必须在web.config中列出每个路由,这听起来不对...

有没有办法告诉ASP.NET自动将物理路径身份验证规则应用于路由,以便我只需要指定对成员/公共的unauth访问权限,所有到该位置的路由都会自动获得访问权限?

谢谢!

0 个答案:

没有答案