如果我想保護除一個用戶以外的所有人都能訪問的操作,我該怎麼做?確保只有特定用戶有權訪問
讓我們假設用戶有一個產品。當他們轉到EditProduct操作時,如何防止其他人訪問它?在過去,我總是使用User.Idenity.Name
並將dthat與他們的用戶名進行比較。但是如果有人以username
而不是UserName
登錄,那麼即使它是同一用戶,情況也會中斷。
在每張支票上使用.ToUpper()
或類似的東西似乎非常脆弱和低效。
如果我想保護除一個用戶以外的所有人都能訪問的操作,我該怎麼做?確保只有特定用戶有權訪問
讓我們假設用戶有一個產品。當他們轉到EditProduct操作時,如何防止其他人訪問它?在過去,我總是使用User.Idenity.Name
並將dthat與他們的用戶名進行比較。但是如果有人以username
而不是UserName
登錄,那麼即使它是同一用戶,情況也會中斷。
在每張支票上使用.ToUpper()
或類似的東西似乎非常脆弱和低效。
你可以把一個授權屬性,這樣的動作上面:
[Authorize(Users = "username")]
我不能完全肯定是否是大小寫敏感的,但是這是爲了保護行動和控制器的最佳方法。此外,你可以做同樣的角色:
[Authorize(Roles = "Administrator")]
字符串是否具有等於屬性:
User.Identity.Name.Equals("OtherName",StringComparison.CurrentCultureIgnoreCase)
如果沒有角色還沒有被設置的所有用戶都認爲'Users'或者沒有默認?換句話說,您是否可以使用'[授權(用戶=「用戶名」)] 1而無需事先設置? – Johannes
Johannes不清楚目標是使用授權保護方法,還是僅僅審計相關用戶是否具有權限(是創建者還是某種授予許可的方式)。默認授權操作篩選器只能保護針對禁止的操作(按名稱或角色)。如果目標是僅允許創建產品的用戶編輯產品,則這不起作用。如果需要,可以編寫自定義的授權過濾器,或者可以在從數據庫獲取數據後執行自己的檢查。 –
@Johannes [Authorize]將審計您是否登錄了任何角色或任何用戶的含義。只有申請用戶或角色,如果您有權授予 –