@attribute [Authorize(Roles = "Admin")]
@attribute [Authorize(Roles = NavigationManager.QueryString("level"))]
我已经在我的页面级别添加了这段代码,第一个授权属性工作得很好,因为它只是一个常量值"Admin"但不是第二个authorize属性。
我试图根据查询字符串授予访问权限,但此代码NavigationManager.QueryString("level")
将有此错误非静态字段、方法或属性"成员"需要对象引用">
https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-messages/cs0120?f1url=%3FappId%3Droslyn%26k%3Dk (CS0120)
有办法解决这个问题吗?
简短的回答:你不能这么做。属性参数需要是编译时常数。
长话短说:不要这样做。使用查询字符串检查授权本质上是不安全的。
如果您有复杂的授权,请检查基于策略的授权。总的来说,这是一个很好的解释。查看更多Blazor WASM特定示例