【问题标题】:ASP .Net Web.configASP .Net Web.config
【发布时间】:2013-11-26 13:54:56
【问题描述】:

在我的 ASP .Net 应用程序(不是 MVC,只是 ASP .Net)中,我有几个 Web 表单,需要限制用户直接访问多个网页。

但在来自其他页面的应用程序链接中,根据应用程序的功能,应该能够重定向(Response.Redirect或Form提交post或get方式)到那些页面但严格不能直接在浏览器中输入url和访问它们。

我在那些页面加载事件(需要限制直接访问)中尝试了以下操作并且工作得很好。

if (Request.UrlReferrer == null)
{
     Response.Redirect("~/Index.aspx", true);
}

但我遇到的问题是我对 ASP .Net 比较陌生,想知道这是否是最好的方法。

1)。主要是我搜索但需要知道是否可以使用 web.config 文件完成此操作。如果是这样,如果有人能解释 web.config 文件应该如何完成这项工作,将不胜感激......

2)。如果用户在站点托管域名中输入错误的 URL,我也想重定向用户...为此,我在 web.config 中执行了以下操作,但想知道这是否正确。谢谢...

<customErrors mode="On" defaultRedirect="~/Index.aspx">
    <error statusCode="404" redirect="~/Index.aspx" />
</customErrors>

【问题讨论】:

  • 通常您会重定向到特定的“找不到页面”或“404 错误”页面,而不是返回到索引 - 这很可能会使用户感到困惑,并被视为“黑暗做法”。见codinghorror.com/blog/2007/03/…。关于重定向问题,这应该有多安全?如果正在检查的只是推荐的存在,那么没有什么可以阻止用户使用 JavaScript 将自己从公共页面重定向到所谓的“安全”页面。也许你应该考虑代币?

标签: c# asp.net web-config


【解决方案1】:

您可以将其添加到您的 web.config 文件以限制特定用户:

<authorization>
<allow users="user1, user2"/>
<deny users="?"/>
</authorization>

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

在您的 C# 上,您可以使用 Response.Redirect

protected void Application_EndRequest(Object sender, EventArgs e)
{
    if (HttpContext.Current.Response.Status.StartsWith("401"))
    {
        HttpContext.Current.Response.ClearContent();
        Response.Redirect("AccessDenied.aspx");
    }
}

【讨论】:

    猜你喜欢
    • 2016-03-22
    • 2011-03-24
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    相关资源
    最近更新 更多