通过sidentityServer3在Angular2中的身份验证,并从ASP.NET MVC4访问WebAPI



我尝试将所有此框架(从标题)一起设置。到目前为止,我设置了IdentitySever3,并设法在Angular 2应用程序中的登录按钮上获取登录屏幕。

成功登录后,我从身份验证服务器接收令牌,现在我想从ASP.NET WebAPI(.NET 4.6.2)询问一些数据。

,我有一个问题。我应该如何配置此服务器应用程序,它能够从Angular应用程序中理解从发送令牌的数据。大多数教程描述了.NET核心。任何人都可以向我展示一些例子,或者说我缺少什么。

您正在问一个非常普遍的问题,但是以下指示可能会有所帮助:

看看https://github.com/indistityserver/indistityserver3.smples您应该写正常的.NET WebAPI,并且需要两个更改: 1.像其中一个示例一样,在服务器上实现"启动"类)。 2.在每个控制器/Web上添加[身份验证]属性 您想要的方法。

和在Angular应用程序上(示例来自Angular1,但应清楚),您需要在每个请求上发送令牌int inter授权标头:

您在模块声明之后放置的代码

.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);
    }
}

以这种方式,您将发送令牌=> 访问令牌(可以存储在本地存储中)。显然,标记 ..... 表示您需要用某些东西替换:)

最新更新