在asmx服务中进行身份验证

时间:2015-08-03 14:00:41

标签: c# asp.net asmx

我正在使用带有asmx服务的ASP.NET来访问我的SQL数据库。

该服务被称为客户端和后端。

该网站将用于我们的内部员工和我们的客户。

asmx服务中有一些方法,如果未经过身份验证,我希望禁用访问权限。我真的不想在每个方法中编写很多重复的代码来检查这个。

有没有通用方式或更好? 谢谢。

2 个答案:

答案 0 :(得分:2)

WCFWeb API似乎是比ASMX更好的授予数据库中某些资源访问权限的解决方案,因为该功能已经被淘汰了一段时间。

如果您使用WebAPI,则可以使用Authorize属性,如果用户未获得授权,该属性将阻止访问某种方法。 WCF没有开箱即用的功能,但有workarounds

答案 1 :(得分:1)

如果您想使用ASMX(我不再推荐),请直接回答您的问题,您只需检查用户是否经过身份验证。

if(HttpContext.Current.Request.IsAuthenticated)
{
    //continue normal code here
}
else
{
    //probably should return an HTTP 401 Unauthorized code
    Response.StatusCode = 401;
    Response.End();
}

您甚至可以将其抽象出来,以便在请求开始时进行一次方法调用,从而满足您的需求,避免大量代码"要求。

public class AsmxAuthenticationUtilities
{
    public static void VerifyUserIsAuthenticated()
    {
        if(!HttpContext.Current.Request.IsAuthenticated)
        {
            Response.StatusCode = 401;
            Response.End();
        }
    }
}

然后在您的ASMX方法开始时,您可以致电AsmxAuthenticationUtilities.VerifyUserIsAuthenticated();