1

我的 web.config 中有这个

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

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

  • ChangePassword.aspx?mode=
  • ChangePassword.aspx?userid=xx&mode=

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

编辑以更好地理解问题

purpose= 未登录用户必须有权访问 ChangePassword.aspx 页面及其收到的任何查询字符串。

未登录用户的问题:

  • 他们可以访问ChangePassword.aspx
  • 他们无法访问ChangePassword.aspx?parameter=value
4

2 回答 2

0

如果用户可以访问该页面,他们可以将查询字符串添加到路径中。

授权机制仅对文件位置进行操作 - 您不能使其对查询字符串参数进行操作。

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

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

Request.QueryString["UserId"]
于 2012-05-25T17:21:15.760 回答
0

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

ChangePassword.aspx?Userid=xx&mode=

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

确保它是使用正确的 Xml 编码编写的(除此之外,它会将所有 '&' 字符替换为 '&')。

这应该很好用:

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

或者你可以使用

System.Web.HttpUtility.HtmlEncode(yourUrl);

我希望它有用;)

于 2018-08-29T13:07:44.363 回答