首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ForbidAsync Vs ChallengeAsync为什么和何时使用它们

ForbidAsync Vs ChallengeAsync为什么和何时使用它们
EN

Stack Overflow用户
提问于 2017-03-19 07:14:42
回答 1查看 6.6K关注 0票数 12

AuthenticationManager类上有两种方法,ForbidAsync()ChallengeAsync(),我知道我可以在控制器中执行HttpContext.Authentication.ForbidAsync或返回一个ForbidResult类型的结果,它具有相同的效果,ChallengeAsync也是如此。但它们似乎产生了同样的结果:

代码语言:javascript
运行
复制
public ForbidResult ForbidResult()
{
  return Forbid();
}

public ChallengeResult ChallengeResult()
{
  return Challenge();
}

关于它们的使用或任何例子,这里没有太多的文档,我想知道如何和为什么使用它们。

Update:顺便说一句,我把这方面的研究写成了一篇名为解释Asp.Net核心行动结果的文章。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-19 16:36:52

在当前访问者未登录但试图访问需要经过身份验证的用户的操作时,通常应使用挑战结果。这将引发对全权证书的质疑。它还可以用于身份验证用户(未授权操作),以及您希望提示提供更高权限凭据的用户。

如果当前访问者在系统中以用户身份登录,但试图访问其帐户没有权限执行的操作,则应使用禁止结果。

使用标准的ASP.NET核心CookieAuthentication按标识添加,默认路径被设置为处理每一种情况,并且用户被重定向。

默认情况下..。拒绝访问--即禁止重定向/帐户/未经身份验证的访问--即挑战看起来重定向到/Account/Login

没有重定向,禁用将返回403状态代码,挑战将返回401。

在您的示例中,由于重定向发生在默认选项中,因此您将看到302找到的状态代码。

我还没有深入研究过这方面的代码,但这是我的一般理解。

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42883946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档