Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.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 MVC中应用程序的自定义安全性(非大众市场网站)_C#_Asp.net_Asp.net Mvc_Security - Fatal编程技术网

C# ASP.NET MVC中应用程序的自定义安全性(非大众市场网站)

C# ASP.NET MVC中应用程序的自定义安全性(非大众市场网站),c#,asp.net,asp.net-mvc,security,C#,Asp.net,Asp.net Mvc,Security,我正在构建一个SaaS应用程序,在处理授权和ASP.NET MVC时遇到一些问题。我有一个前科,这是从那里的评论中得到的线索。我需要为每个用户提供某种粒度的安全性(例如大量权限)。我意识到,只要创建更多的角色,任何自由裁量系统都可以建模为角色系统。但这比我想处理的角色多得多。我认为角色不适合我,我希望在权限级别上做得更多 我知道,对于任何涉及ASP.NET和授权的问题,标准的回答是将所有应用程序用户创建为Windows用户,并实现ASP.NET成员资格提供程序。有一个问题,我不打算创建Windo

我正在构建一个SaaS应用程序,在处理授权和ASP.NET MVC时遇到一些问题。我有一个前科,这是从那里的评论中得到的线索。我需要为每个用户提供某种粒度的安全性(例如大量权限)。我意识到,只要创建更多的角色,任何自由裁量系统都可以建模为角色系统。但这比我想处理的角色多得多。我认为角色不适合我,我希望在权限级别上做得更多

我知道,对于任何涉及ASP.NET和授权的问题,标准的回答是将所有应用程序用户创建为Windows用户,并实现ASP.NET成员资格提供程序。有一个问题,我不打算创建Windows用户。我的问题是,标准的ASP.NET MVC AuthorizeAttribute和AuthorizeCore能否与权限模型相匹配


显然,这里的推动力是ASP.NET MVC缓存将破坏自定义安全实现。显然,我不希望我的页面运行缓慢,但我不确定我是否需要这种缓存。我正在构建一个业务应用程序;缓存所有东西真的合适吗?看来缓存只会使并发问题比现在困难得多。例如,如果我正在缓存所有的客户信息页面,包括编辑页面,那么我是否会破坏我所拥有的任何并发控制(比如,时间戳检查)

首先,您当然不需要让应用程序用户成为windows用户。默认的开箱即用MVC将它们作为用户存储在sql数据库中


通常不应缓存编辑页,因为在缓存寿命内,它们不会使用相同的数据多次加载。我的想法是MVC很容易添加缓存,我会先构建它,然后进行性能测试,看看这是否是必要的步骤。(请记住,除非您正在查看大量的客户端连接,否则通常更经济的做法是生成性能稍差的代码并增强服务器硬件。

使用ASP.NET成员资格提供程序不需要创建Windows用户,它使用SQL表存储成员资格对象。是的,您可以使用例如,在只有“管理员”可以编辑的页面中,您将使用以下授权属性:

[授权(Users=“Admin”)]

此外,您不希望缓存用户将要编辑数据的页面,请在指定给匿名用户(没有编辑权限的用户)的区域中使用缓存(您可以经常这样做)


希望这有帮助。

如果我是你,我不会将用户创建为Windows用户,而是将其存储在SQL数据库中。因此,你现在可以完全控制如何将安全需求与用户关联

完成此操作后,您可以通过创建一个实现IAuthorizationFilter的类来创建自定义安全筛选器。这样,您就可以控制要执行的任何验证,基于角色、基于权限、基于星期几等等


然后,您只需使用新的自定义安全筛选器为您的服务方法添加属性,并传递您需要的任何信息,以确保调用用户具有执行该方法的适当权限/角色。

谢谢,但这并不能真正回答我的问题。这仍然是关于角色的。我对Windows用户的评论只是出于不满我对很多答案感到困惑,所以我尽量不使用角色。