iis 如何阻止通过URL访问API后端,而不阻止它从应用程序?

mmvthczy  于 2023-08-05  发布在  其他
关注(0)|答案(2)|浏览(179)

我想阻止用户从后端API调用访问内容,这会得到一些用户(这样,如果他们写的URL,阻止用户访问),但要访问时,前端调用后端。我在IIS中托管应用程序,我使用C#作为后端,使用Angular作为前端。

8cdiaqws

8cdiaqws1#

您可以通过在调用中包含一个简单的Guid令牌来实现这一点。
在web.config应用程序设置部分中指定标记。

<appSettings>
    <add key="ValidToken" value="12345678-1234-1234-1234-123456789012" />
</appSettings>

字符串
然后在API方法中:

public HttpResponseMessage yourcall(string token)
{
  var validToken = ConfigurationManager.AppSettings["ValidToken"];
  if(validToken != token) return null; //or do something else
  ....
}


编辑:很抱歉重读了你的问题,上面的可能不合适,因为电话来自客户端。正如奥利弗提到的,有关呼叫的信息将在网络选项卡中可见。这在呼叫较少暴露(即,应用程序之间)。

wj8zmpe1

wj8zmpe12#

public class BasicAuthenticationAttribute : AuthorizationFilterAttribute
    {
        public override void OnAuthorization(HttpActionContext actionContext)
        {
            string eid = RequestDataProvider.GetValue(HttpContext.Current, TypeOfData.UserName);

            if (actionContext.Request.Headers.Referrer != null)
            {
                Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity(eid), null);
            }
            else
            {
                actionContext.Response = actionContext.Request
                    .CreateResponse(HttpStatusCode.OK, "Please use proper media to get response.", JsonMediaTypeFormatter.DefaultMediaType);
            }
        }
    }

字符串

相关问题