1

我希望阻止所有非注册用户的访问,

那么,下面的工作不会吗?

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

但是,我看到许多用户也使用该<allow>标签以及拒绝标签。为什么我们需要写<allow>,因为我们只是拒绝不需要的用户?

4

2 回答 2

2

拥有一个允许元素并没有什么坏处。但这不会改变任何事情。

来自 MSDN:

ASP.NET 的默认配置包含一个授权所有用户的元素。(默认情况下,最后应用此规则。)如果没有其他授权规则匹配,则允许请求。如果找到匹配项并且匹配项是拒绝元素,则返回请求并带有 401 HTTP 状态代码。如果允许元素匹配,则模块允许进一步处理请求。

编辑:在下面回答您的问题。你可能想要的是:

<authorization>
      <allow role="Admin"/>
      <deny users="*" />
</authorization>

换句话说。允许管理员但拒绝其他所有人。

于 2012-07-02T17:23:43.330 回答
1

它是您可以在一次性用品中使用的它们的组合。一个好的做法是专门调用你的授权,这样你就可以覆盖你的基地。例如,您可以指定拒绝所有未经授权的用户,然后说允许所有其他用户或子集。顺序确实很重要,就像阿奎那提到的那样。

不知道如何回答您关于允许一个角色但不允许其他管理员与用户的问题:

好的。另外,如果我希望只允许访问“管理员”角色而不是“用户”角色,添加会正常工作,对吧?

这会起作用,但不会像您期望的那样。这将拒绝所有具有“用户”角色的人,但随后允许所有其他角色。因此,要解决此问题,您需要添加具有指定管理员角色的允许标记。

于 2012-07-02T17:27:27.460 回答