访客被拒绝访问管理员文件夹并被重定向到Login.aspx页面。

3
我在webconfig中使用以下内容,以便只有管理员可以访问管理员文件夹。
<location path="Admin" allowOverride="true">
<system.web>
  <authorization>
    <allow roles="Administrators" />
    <deny users="*" />
  </authorization>
</system.web>

现在当访客用户尝试访问此页面时,会被重定向到登录页面。

我希望用户要么显示一个弹出窗口表示无法访问,要么仅停留在同一页面并在该页面上的标签中显示一些错误消息...

有任何建议吗?

谢谢

这是webconfig中的更多代码

<authentication mode="Forms">
    <forms loginUrl="Login.aspx" protection="All" name="Cookie" timeout="120" path="/" slidingExpiration="true"
       defaultUrl="Default.aspx">
    </forms>
3个回答

1

你可以在代码后台以编程方式拒绝访问,而不是在web.config中拒绝访问。

        if (User.IsInRole("Administrators"))
        {
            accessDeniedMessage.Visible = true;
            adminPage.Visible = false;
        }
        else
        {
            adminPage.Visible = true;
            // show admin page
        }

有没有办法做到这一点?我不知道...或者在进入每个页面之前,我检查用户是否处于管理员角色中...? - user175084
但是我在我的管理文件夹中有很多页面..所以每次都要检查这个代码..这将是耗时的..因此在webconfig中..如果访问被拒绝,我相信一定有一个方法可以留在同一页上..谢谢。 - user175084
...是的,这将适用于管理文件夹中的页面,而不是文件夹本身。 - mark123
你也可以在MasterPage的管理员版本上执行此操作,以便它自动用于每个管理员页面。然后它只需在一个地方编写和维护即可。 - mark123
如果您正在使用管理主页,则Web内容表单的位置并不重要。 - mark123
我可能从一开始就误解了你的问题。你是想避免重定向并在被拒绝的页面上显示“访问被拒绝”消息吗? - mark123

1

这是我在登录页面中所做的事情...

if (!IsPostBack)
        {

            if (User.Identity.IsAuthenticated)
            {
                if (!string.IsNullOrEmpty(Request.QueryString["ReturnUrl"]))
                {
                    Response.Redirect("~/Guest/Pagedenied.aspx");
                }
            }

        }

这样,无论是aspx页面还是其中的任何其他文件,管理文件夹都被拒绝访问...并且登录屏幕也被避免...

如果有更好的建议,请提出...

谢谢


1

您可以使用自定义错误。请看这里,并注意要重定向的错误是401而不是404。


好的,我匆忙地写了这个回复,但我很乐意扩展它 - 你能解释一下你在那里发现困难吗? - Asaf R

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接