[英]Authentication via IdentityServer3 in angular2 and access to webapi from asp.net mvc4
我尝试一起设置所有这些框架(从标题开始)。 到目前为止,我已经安装了IdentitySever3,并设法在我的angular 2应用程序中的登录按钮上获得了登录屏幕。
成功登录后,我从身份验证服务器收到令牌,现在我想从ASP.Net WebApi(.Net 4.6.2)询问一些数据。
而且我有一个问题。 我应该如何配置此服务器应用程序,使其能够理解来自角度应用程序的已发送令牌中的数据。 大多数教程都介绍.Net核心。 任何人都可以给我展示一些例子,或者说出我所缺少的。
您在问一个非常笼统的问题,但是以下指针可能会有所帮助:
看看https://github.com/IdentityServer/IdentityServer3.Samples。您应该编写普通的.Net WebApi,并且基本上需要进行两个更改:1.像示例之一一样,在服务器上实现“启动”类( https: //github.com/IdentityServer/IdentityServer3.Samples/blob/master/source/WebHost%20(Windows%20Auth)/WebHost/Startup.cs )。 2.添加要添加到每个控制器/ Web方法上的[身份验证]属性。
并且在angular应用程序上(示例来自angular1,但应该清楚),您需要在每个请求中将令牌发送给int Authorization标头:
您在模块声明后放置的这段代码
.config(($httpProvider: ng.IHttpProvider) => {
$httpProvider.interceptors.push("authInterceptorService");
})
然后你做的功能
export function authInterceptorService($q, $rootScope, $location) {
return {
request,
responseError
};
function request(config) {
config.headers = config.headers || {};
if (!_.startsWith(config.url, **URLtoYourApi**)) {
return config;
}
config.headers.authorization = "Bearer " + **access token**;
return config;
}
function responseError(rejection) {
if (rejection.status === 401) {
// do some rejection logic
$location.path("/");
}
return $q.reject(rejection);
}
}
这样,您将在每个请求上发送令牌=> 访问令牌 (可以存储在本地存储中)。 显然标记...意味着您需要用一些东西来代替:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.