Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于角色ASP.NET MVC4的页面权限_C#_Asp.net Mvc 4 - Fatal编程技术网

C# 基于角色ASP.NET MVC4的页面权限

C# 基于角色ASP.NET MVC4的页面权限,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,实现系统在允许用户访问特定页面之前检查用户角色的机制的最佳方式是什么?此外,为了在页面中启用某些链接/操作,例如,对于具有“超级”角色的用户,他们可能能够删除/编辑数据,而其他用户只能看到数据 仅供参考,我不使用ASP.NET MVC中的现成用户管理(用户是在嵌入到webapp的.mdf数据库中创建的),但我开发了自己的用户模块(用于验证、注册和删除用户) 那么..解决这个问题的最佳实践是什么?您可以编写一个自定义的验证属性: 基本上,您继承自ValidationAttribute,并重写IsV

实现系统在允许用户访问特定页面之前检查用户角色的机制的最佳方式是什么?此外,为了在页面中启用某些链接/操作,例如,对于具有“超级”角色的用户,他们可能能够删除/编辑数据,而其他用户只能看到数据

仅供参考,我不使用ASP.NET MVC中的现成用户管理(用户是在嵌入到webapp的.mdf数据库中创建的),但我开发了自己的用户模块(用于验证、注册和删除用户)


那么..解决这个问题的最佳实践是什么?

您可以编写一个自定义的
验证属性

基本上,您继承自
ValidationAttribute
,并重写
IsValid()

…然后将其应用于控制器操作:

[HttpGet]
[IsAnAdmin]
public ActionResult MyAction() {
    // only administrators can access this now
}

假设我有两个角色
admin
normal
以及一个控制器方法
MonitorTraffic
。如何进行筛选,以便只有
admin
可以在此控制器方法中访问此页面?对不起,我对MVC4有些陌生。从给出的示例中,我没有看到注释是如何做到这一点的。也许你能给我举个例子吗?我已经更新了我的答案。该属性由MVC激发,因为它继承自
ValidationAttribute
。它将调用
IsValid
方法,如果
IsValid
返回
true
,则将授予访问权限。如果返回
false
,访问将被拒绝。请理解。但是我在哪里可以创建这个类呢?我是说放在合适的地方?我想不是在模型里吧?对不起,新手问题又来了,不用担心。它们是前端解决方案。。所以我会把他们放在UI项目(你的MVC项目)的“代码”文件夹中。认真地否决投票给哪些人?因为你可以先搜索;)或者看看建议。我想如果你不想回答这个问题就好了。但否决票是站不住脚的。你看到这个问题的答案了吗。为我们提供更多的选择。
[HttpGet]
[IsAnAdmin]
public ActionResult MyAction() {
    // only administrators can access this now
}