簡體   English   中英

具有ASP.NET Web Api身份驗證和角色的ASP.NET MVC

[英]ASP.NET MVC with ASP.NET Web Api authentication and roles

我創建了一個ASP.NET MVC應用程序,已經成功安裝了WebAPI,現在我使用ajax請求來獲取api的數據。
某些數據僅在用戶驗證后才可用,並且只有在具有特定角色時才可用。 有沒有辦法做到這一點?

C#WebApi代碼:

public class TestController : ApiController
{
    [HttpGet]
    [Authorize(Roles = RoleTypes.Admin +","+ RoleTypes.Enabled)]
    public string Query()
    {
    string test = "test";
    return test;
    }

}

我的JavaScript代碼:

  // Here i should get the tokenKey but where should i set it? is this approach right?
var token = sessionStorage.getItem(tokenKey);
var headers = {};
    if (token) {
        $.ajaxSetup({
            headers: {
                'Authorization': "Bearer " + token
            }
        });
    }


    $.get("/api/Test/Query", function (data) {
    //stuffs here
      });
}

我在您的代碼中看到您使用了JWT令牌。 JWT令牌的制作方式如下:

XXX.ZZZ.YYY

當用戶不登錄時,您可以在啟動項目中獲取角色和權限並在令牌中進行設置。

或創建一種捕獲方法,以獲取角色和權限,並使用在其中設置數據的靜態屬性。

現在,這里的問題是如何授權您的行動用戶。

我建議您使用動作過濾器, 使用此鏈接來了解動作過濾器 ,並檢查其許可權並調用其他管道。

祝好運。

根據 ,當用戶登錄時,你應該生成令牌。 該令牌將存儲在客戶端並在請求中使用。

$.ajax({
    type: 'POST',
    url: '/Login',
    data: loginData
}).done(function (data) {
    self.user(data.userName);
    // Cache the access token in session storage.
    sessionStorage.setItem(tokenKey, data.access_token);
}).fail(showError);

接下來,當用戶將請求發送到服務器時,您將令牌傳遞給標頭。

var token = sessionStorage.getItem(tokenKey);
var headers = {};
if (token) {
    headers.Authorization = 'Bearer ' + token;
}

$.ajax({
    type: 'GET',
    url: 'api/values/1',
    headers: headers
}).done(function (data) {
    //stuffs here
}).fail(showError);

,令牌服務器,以獲得債權(角色)的授權解密。 您的ApiController是正確的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM