“反向”授权页面被重定向到登录

时间:2010-02-01 18:06:40

标签: asp.net forms-authentication redirect

因此,我有一个页面,我只希望匿名用户可以看到,并且经过身份验证的用户可以重定向。所以,像这样:

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

问题是,当经过身份验证的用户尝试访问它时,会将其重定向到登录页面。我怎样才能让他们更合乎逻辑? obtw,我只限于.NET v2.0x

4 个答案:

答案 0 :(得分:2)

为什么不将if ( Request.IsAuthenticated ) { Response.Redirect ...添加到页面的Page_Load事件中,而不必担心配置它?不幸的是,你只能配置一个页面来处理登录,如果有人没有访问权限,他们将被定向到它。您也可以在登录时检查ReturnURL以查看它是否来自页面并且用户是经过身份验证的,但对我来说这是一个很好的解决方案。

答案 1 :(得分:1)

好的,所以答案是我需要在呈现之前修改菜单。我从未找到通过更改authoriztion / SecurityTrimming来处理SiteMap的方法。所以我决定尝试在源头修改SiteMap,然后我发现了如何修改MenuItems as they were bound。这似乎是最有效的方法。

答案 2 :(得分:0)

不确定如何在web.config中执行此操作。在Login_ForgotUserID.aspx页面中,可能在加载/呈现之前检查用户是否已经过身份验证。如果用户已通过身份验证,则会将其重定向到某个无害的主页或默认页面。

答案 3 :(得分:0)

您也可以在这里查看角色。

如果您要将所有用户默认添加到某个角色,请说“已验证”,那么您可以:

<location path="Login.aspx">
  <system.web>
    <authorization>
        <deny roles="authenticated" />
        <allow users="*" />
    </authorization>
  </system.web>
</location>

您必须确保列表中的deny是fisrt,因为这些是按顺序处理的,并且使用了第一个匹配。

另外两种做类似事情的方法:

  1. 编写custom sitemap provider以确保在对用户进行身份验证时,这些页面不会返回到树视图控件。
  2. 为您的树视图控件写一个control adapter,以确保它们不会呈现这些页面。