gpt4 book ai didi

asp.net-mvc - Web API Controller 和 MVC Controller - 身份验证

转载 作者:行者123 更新时间:2023-12-04 23:52:23 24 4
gpt4 key购买 nike

我有一个 MVC 应用程序。它还使用由 Web API Controller 公开的服务。

MVC 和 Web API 的托管环境都是 IIS。在 IIS 中,身份验证模式集是匿名的。

HttpModule 用于将用户的身份和角色设置为Thread 和HttpContext 对象。

正确调用 MVC Controller ,但 Web API Controller 返回 401 未授权错误。

两个 Controller 都使用了适当的授权属性。

下面是使用用户将用户设置为线程和上下文对象的代码。

var principal = new GenericPrincipal(new GenericIdentity(userName), roles);
// contextBase.User = principal;
HttpContext.Current.User = principal;
Thread.CurrentPrincipal = principal;

最佳答案

Web Api 是基于 REST 的。除此之外,REST 是无状态,这意味着没有 session 的概念。 MVC 中的身份验证是通过 session 处理的,因此仅在应用程序的 MVC 端进行身份验证对 Web Api 端没有任何作用。

每个 Web Api 请求都必须包含满足该请求所需的所有信息,其中包括任何适用的身份验证/授权。通常对于 API,这是通过在请求 header 中传递身份验证 token 来处理的,但是您可以通过多种方式对 API 请求进行授权。我只推荐 searching for something like "web api authentication"和阅读一点。

总而言之,授权 Web API 端点需要一个不同于通过 MVC 站点进行身份验证的独立过程。

关于asp.net-mvc - Web API Controller 和 MVC Controller - 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28682759/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com