[英]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.