在web.config中允许使用查询字符串的位置路径

问题描述 投票:1回答:2

我在我的web.config中有这个

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

问题是,在访问页面时,我需要允许使用查询字符串访问此页面,这不起作用:

  • 为ChangePassword.aspx?模式=
  • 为ChangePassword.aspx?的userid = XX&模式=

我怎样才能做到这一点?当然,参数将始终具有动态值,我无法在web.config中硬编码ID。

编辑以更好地理解问题

目的=未登录用户必须能够访问ChangePassword.aspx页面,其中包含收到的任何查询字符串。

非登录用户的问题:

  • 他们可以访问ChangePassword.aspx
  • 他们无法访问ChangePassword.aspx?parameter=value
asp.net path web-config
2个回答
0
投票

如果用户可以访问该页面,则可以向该路径添加查询字符串。

授权机制仅在文件位置上运行 - 您无法使其对查询字符串参数进行操作。

如果要根据参数更改页面行为,则应在页面代码中执行此操作。

您可以轻松访问页面上的查询字符串参数:

Request.QueryString["UserId"]

0
投票

问题不在web.config中:关于标记的设置是正确的。问题是链接

ChangePassword.aspx?Userid=xx&mode=

不允许正确路由到您的页面的字符是“&”。

确保使用正确的Xml编码(其中包括将'&'替换所有'和'字符)编写。

这应该很好:

ChangePassword.aspx?Userid=xx&amp;mode=

或者你可以使用

System.Web.HttpUtility.HtmlEncode(yourUrl);

我希望它有用;)

© www.soinside.com 2019 - 2024. All rights reserved.