0
我有一個允許編輯3D地圖的內容管理系統。我要授權每個用戶的基礎上,使得用戶只能放置/刪除/獲得一定的azazaz如果:對Angular2/4和Web API中具有特定ID的資源的Auth0授權2
- 用戶擁有地圖
- 用戶是管理員
我已經看過示波器,但這些感覺就像是錯誤的方法,因爲「編輯:地圖」的範圍不能不同,只有當用戶可以編輯任何地圖時,才能區分MapIds。
另一種方法是使用auth0規則是這樣的:
function (user, context, callback) {
var allAuthorizedMapIdsForUser = someExternalDbCall();
context.idToken['https://authorizedMapids.com'] = allAuthorizedMapIdsForUser;
callback(null, user, context);
}
,但我對不能確定如何實現和ASP NET的Web API 2.
第三,可能在使用最冗餘的辦法是實現每個API方法手動授權:
[HttpGet]
public async Task<IHttpActionResult> GetMap(int mapId)
{
var userId = //somehow get userId
// Checks some DB-table if user has MapId or is admin
bool isAuthorized = this.IsUserAuthorizedForMapId(mapId, userId);
if (!isAuthorized)
return Unauthorized();
// ..perform GET
}
任何想法?
感謝您的回覆。如果ID是事先知道的,這將工作,但我正在尋找更動態的方法,因爲用戶可以自己創建映射,因此需要在運行時/方法調用時獲取ID。也許我正在接近這個錯誤的方式。我擔心的是用戶可以惡意更改Angular 2前端的地圖ID,因此可以刪除他們想要的任何地圖。我估計我應該考慮前端安全性,而不是在加載任何地圖之前進行API調用,以檢查用戶是否在JWT令牌中由用戶ID在該特定地圖上授權。 –