使用通用处理程序(ashx)中的网络凭据进行读取和身份验证

时间:2015-07-01 17:55:14

标签: c# ashx generic-handler networkcredentials

我在实体框架应用程序中创建了一个通用处理程序,它显示了表中的数据。我希望保护处理程序,以防有人试图直接使用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); 哪里有共同的用户名和密码的协议。我将在哪里将这些映射到我的处理程序中?

1 个答案:

答案 0 :(得分:0)

您要找的是AuthorizeAttribute。这允许您使用基于角色的权限来访问

的类和方法

以下是一些可以帮助锁定网页的其他属性:

[HttpPost] //URL Post method only

[HttpGet] //URL Post method only

[ChildActionOnly] //Not accessible via URL

修改

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

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

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

这将阻止使用网址参数进行任何直接网址访问。