我正在c#中编写Azure函数,执行一些自定义授权。如果授权失败,我想返回403.我尝试了以下内容:
return new ForbidResult();
这会给出错误消息:
'未指定authenticationScheme,且找不到DefaultForbidScheme'
return new StatusCodeResult(403);
这只是在Firefox和Edge中给我空白页。
思想?
答案 0 :(得分:1)
是HTTP触发的功能吗?
return new HttpResponseMessage(HttpStatusCode.Forbidden);
答案 1 :(得分:0)
对于自定义身份验证失败的HttpTrigger函数(由于缺少凭据或权限不足或相似),我会这样返回:
request.CreateResponse(HttpStatusCode.Unauthorized)
request.CreateErrorResponse(HttpStatusCode.Unauthorized, "You have insufficient rights for this mighty resource")
对于参考rfc2616,401更适合在auth 范围内发生大nono的情况。根据w3 403的意思
服务器理解请求,但拒绝履行请求。授权无效,请求不应重复。如果请求方法不是HEAD并且服务器希望公开为什么请求没有得到满足,那么它应该描述实体中拒绝的原因。如果服务器不希望将此信息提供给客户端,则可以使用状态代码404(未找到)。
其中401州
请求需要用户身份验证。响应必须包含WWW-Authenticate头字段(第14.47节),其中包含适用于所请求资源的质询。客户端可以使用合适的Authorization头字段重复请求(第14.8节)。如果请求已包含授权凭据,则401响应表示已拒绝授权这些凭据。如果401响应包含与先前响应相同的挑战,并且用户代理已经尝试过至少一次认证,则应该向用户呈现响应中给出的实体,因为该实体可能包括相关的诊断信息。 “HTTP身份验证:基本和摘要访问身份验证”中介绍了HTTP访问身份验证。
来自Chris的这件事也应该有效;)