在MVC和Http AuthorizeAttribute中进行身份验证和授权

时间:2017-07-05 06:36:06

标签: angularjs asp.net-mvc asp.net-mvc-4 authentication cookies

我得到了现在正在运作的关注方案:

使用System.Web.Mvc.AuthorizeAttribute验证用户的MVC控制器是否经过身份验证,它将使用cookie。

API控制器使用System.Web.Http.AuthorizeAttribute授权持有令牌。

我还有角度http拦截器,它可以验证并获取用于API目的的持有者令牌,可以在所有角度$http请求中使用。但是我很困惑如何在用户登录后实现这两种目标?

这是当前的工作流程

  1. 用户单击登录,角度验证并将熊令牌存储在本地存储中。
  2. 完成后,手动触发MVC控制器,以便获取MVC进行身份验证的cookie。
  3. 这对我来说真的是双重工作,或者我应该专注于使用一个AuthorizeAttribute

1 个答案:

答案 0 :(得分:1)

您需要使用授权键授予需要授权的功能。只有在生成授权令牌并通过http请求传递时,才能访问这些函数。

{ (MerchantId eq 5 or MerchantId eq 19 or MerchantId eq 34)}

这将帮助您在用户登录中获取生成的令牌。之后您需要使用控制器

module.service('tokenservice', function ($http) {
this.get = function () {
    var accesstoken = sessionStorage.getItem('accessToken');
    var logged_in = localStorage.getItem('logged_in').toString().trim() === 'false' ? false : true;
    var authHeaders = {};
    if (accesstoken && logged_in) {
        authHeaders.Authorization = 'Bearer ' + accesstoken;
    }

    return authHeaders;
};
});

module.controller('yourControllerName', function ( $http, tokenservice) {
    $http({
        method: "POST",
        url: '/Controller/MyFucntion',
        headers: tokenservice.get(),
    });
});

希望有所帮助