0

我在一个显示表中数据的实体框架应用程序中创建了一个通用处理程序。我想保护处理程序,以防有人尝试使用 url 或其他方式直接访问它。当从另一个应用程序调用它时,我在哪里以及如何编写在处理和显示数据之前进行身份验证的用户名和密码(调用应用程序将具有用户名和密码)

 public class MyDatahandler: IHttpHandler
{


    public void ProcessRequest(HttpContext context)
    {
        context.Response.Clear();
        context.Response.ContentType = "text/plain";

        Mydatalogic a = new dataLogic;
        a.DisplayView();

    }

}

调用请求正在使用 request.Credentials = new NetworkCredential(userName, password); 在哪里有使用什么用户名和密码的相互协议。我将在我的处理程序中将这些映射到哪里?

4

1 回答 1

0

您正在寻找的是AuthorizeAttribute。这允许您使用基于角色的权限来访问您的类和方法

以下是一些有助于锁定页面的附加属性:

[HttpPost] //URL Post method only

[HttpGet] //URL Post method only

[ChildActionOnly] //Not accessible via URL

编辑

您想保护处理程序,以防有人尝试使用 url 直接访问它,对吗?为此,请HTTP_REFERER从 MyDatahandler_ProcessRequest 中检查服务器变量。如果用户不是来自应有的位置,则抛出 HTTP 403 错误。

在您的 web.config 中,尝试将其调整为:

<authorization>
    <allow verbs="POST" users="*"/>
    <deny verbs="GET" users="*"/> 
</authorization> 

这将阻止使用 URL 参数的任何直接 URL 访问。

于 2015-07-01T22:12:25.093 回答