的Web API的应用程序我有这样的解决方案:身份验证只是在MVC一次使用asp.net身份
我需要在ASP.NET MVC网站,在Web API 2.0只进行一次认证(我的意思是我不必检查用户名和密码在MVC网站上是否正确,然后再次在Web Api上检查它们)。
我真的认为AngularJS和ASP.NET MVC是不是一个很好的夫妇。但是,就是这样! ASP.NET MVC网站和Web Api可能位于不同的服务器上。
在这一瞬间我就可以在MVC应用程序验证,我不能“通”的认证上的web API。我正在使用ASP.NET标识的默认代码。所以,我的即时通讯类startup
我:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider
{
// Enables the application to validate the security stamp when the user logs in.
// This is a security feature which is used when you change a password or add an external login to your account.
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
所以,我怎么能“自动”认证的网络API,一旦我已经通过验证的asp.net的MVC?
谢谢
UPDATE
我已经更新了图像。 在这一刻,我做了一些来自MVC应用程序的请求。但是这些请求不需要认证。其他一些请求从angularjs到达,在这里我需要身份验证。 在这一刻我认证MVC应用程序中的用户。
嗨@Derek ...你是正确的部分:在MVC应用程序,我有保护控制器和I已成功验证那里。但是我的web API必须关心用户的身份验证!因此,将您的MVC应用程序注册为您的WEB API的使用者是不够的 – Ciccio
什么是调用Web API?是从MVC应用程序的范围中调用的?在其操作方法中,还是通过AngularJS从客户端浏览器向api发出请求?你的图表表明否则。 – Derek
这取决于上下文......在这个时候,前端和后端在同一台机器上AngularJs将直接调用Web API。在后端将被移动到不可见的服务器的时刻,angularJs将通过MVC调用web api。在这一刻,你是对的,我的图是错的...(我更正) – Ciccio