首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >AngularJS + ASP.NET Web API + ASP.NET MVC身份验证

AngularJS + ASP.NET Web API + ASP.NET MVC身份验证
EN

Stack Overflow用户
提问于 2014-04-17 23:55:27
回答 3查看 15.7K关注 0票数 20

我刚接触AngularJS,正在尝试为我的新web应用程序评估它。

要求:

我将有一个ASP.NET网络应用程序接口,这将从一个安卓,一个iPhone和从网络应用程序(ASP.NET MVC)消费。ASP.NET身份将在Web API中实现。这三个应用程序都将调用Web API的login方法来获取auth令牌。

问题:

我的问题是,当Angular调用获取ASP.NET模板/视图、JavaScript文件或其他资源时,如何让HTML服务器端身份验证工作(与Web API同步,这样我就不必单独登录ASP.NET MVC )。我已经阅读了AngularJS上的许多文章和博客,但仍然无法找到符合我需求的安全模型。

可能的解决方案:

对Web应用程序进行登录调用而不是直接调用Web,ASP.NET MVC应用程序将调用Web进行登录,一旦通过身份验证,将身份验证令牌保存在会话中,并创建一个FormsAuthentication cookie并在cookie数据中保存加密的身份验证令牌,这是不是一个好主意?此外,在ng-init中的某个位置设置HTML令牌,使该令牌位于AngularJS范围内。现在,当AngularJS尝试调用ASP.NET MVC应用程序以获取HTML时,然后通过将cookie解密的数据与会话中的身份验证数据进行匹配来对用户进行身份验证/授权。此外,AngularJS将在报头中发送身份验证令牌,以直接调用Web API方法,以便通过Web API进行数据操作的所有后续调用。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-05-08 18:40:03

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

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

就这样。现在,我的MVC控制器查找会话cookie进行授权,而Web API控制器在每个请求的头部查找auth令牌。此外,Web发送令牌(JSON)和会话cookie本身来响应登录/身份验证请求,例如http:\\www.mydomain.com\token

因此,现在我将登录请求发送到Web API,以获取令牌和会话cookie。会话cookie将自动发送给每个请求,所以我不必担心我的MVC控制器的授权。对于Web API调用,我将在每个请求的头部中发送auth令牌,因为Web API控制器并不关心与请求一起发送的会话cookie。

票数 9
EN

Stack Overflow用户

发布于 2014-06-04 17:24:15

同样值得一看:

https://bitbucket.org/david.antaramian/so-21662778-spa-authentication-example/overview

(基于this SO question)

警告:这不是为胆小鬼准备的。

scaffolding

  • Yeoman (Grunt/Bower)

  • Owin 2.0)

(

  • ASP.NET Web API 2
  • HTML5 + AngularJS + $ngRoute
  • NuGet OAuth framework
票数 5
EN

Stack Overflow用户

发布于 2014-05-03 11:12:16

我认为你走在正确的道路上。我会将这些令牌存储在一个Angular服务中,以方便您自己(http://blog.brunoscopelliti.com/deal-with-users-authentication-in-an-angularjs-web-app)。我对你所说的"AngularJS尝试调用MVC应用程序来获取ASP.NET“的意思有点困惑,你不应该保护MVC应用程序,它只是在运行你的Angular,对吧?API也是您想要保护的部分。

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

https://stackoverflow.com/questions/23137892

复制
相关文章

相似问题

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