如果我想保护除一个用户之外的所有人都可以访问的操作,我该怎么做?
所以假设用户有一个产品。当他们转到 EditProduct 操作时,我怎样才能阻止其他人访问它?在过去,我总是使用User.Idenity.Name
dthat 并将其与他们的用户名进行比较。但是,如果有人登录username
而不是UserName
那么即使是同一用户,案件也会中断。
在每张支票上使用.ToUpper()
或类似的东西似乎非常脆弱和低效。
如果我想保护除一个用户之外的所有人都可以访问的操作,我该怎么做?
所以假设用户有一个产品。当他们转到 EditProduct 操作时,我怎样才能阻止其他人访问它?在过去,我总是使用User.Idenity.Name
dthat 并将其与他们的用户名进行比较。但是,如果有人登录username
而不是UserName
那么即使是同一用户,案件也会中断。
在每张支票上使用.ToUpper()
或类似的东西似乎非常脆弱和低效。
您可以将 Authorize 属性放在操作上方,如下所示:
[Authorize(Users = "username")]
我不完全确定它是否区分大小写,但这是保护动作和控制器的最佳方法。此外,您可以对角色执行相同的操作:
[Authorize(Roles = "Administrator")]
String 具有 Equals 的属性:
User.Identity.Name.Equals("OtherName",StringComparison.CurrentCultureIgnoreCase)