gpt4 book ai didi

asp.net-mvc - AngularJS + ASP.NET Web API + ASP.NET MVC身份验证

转载 作者:行者123 更新时间:2023-12-03 12:58:07 24 4
gpt4 key购买 nike

我是AngularJS的新手,正在尝试为我的新Web应用程序对其进行评估。

需求:

我将有一个ASP.NET Web API,它将从Android,iPhone和Web应用程序(ASP.NET MVC)中使用。 ASP.NET Identity将在Web API中实现。这三个应用程序都将调用Web API的login方法来获取auth token 。

问题:

我的问题是如何使ASP.NET MVC 服务器端身份验证工作(与Web API同步,因此我不必分别登录ASP.NET MVC),而Angular进行调用以获取HTML模板/ View , JavaScript文件或其他资源。我在AngularJS上浏览了许多文章和博客,但仍然找不到适合我要求的安全模型。

可能的解决方案:

最好直接对ASP.NET MVC应用程序而不是Web API进行登录调用,并且ASP.NET MVC应用程序将调用Web API进行登录,并在进行身份验证之后,将auth token 保存在 session 中并创建一个 FormsAuthentication cookie ,并在cookie数据中保存加密的身份验证 token 。此外,在HTML的ng-init 中的某处设置 auth token ,以使该 token 在AngularJS范围内。现在,当AngularJS尝试调用ASP.NET MVC应用程序以获取HTML时,然后通过将cookie中解密的数据与 session 中的auth数据进行匹配来对用户进行身份验证/授权。另外,AngularJS将在 header 中发送 auth token ,以直接调用Web API方法,以用于随后通过Web API进行数据处理的所有调用。

最佳答案

我用非常严格的向前解决方案解决了这个问题。我只是确保在WebApiConfig的Register方法中有以下两行代码:

config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

而已。现在,我的MVC Controller 在寻找 session cookie以进行授权,而我的Web API Controller 在每个请求的 header 中寻找auth token 。此外,Web API会响应于登录/身份验证请求(例如,HTTP请求)发送 token (JSON)和 session cookie本身。 http:\\www.mydomain.com\token

因此,现在我将登录请求发送到Web API以获取 token 以及 session cookie。 session Cookie将在每个请求时自动发送,因此我不必担心我的MVC Controller 的授权。对于Web API调用,我将在每个请求的 header 中发送auth token ,因为Web API Controller 不关心与请求一起发送的 session cookie。

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

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