C# ASP.NET MVC中应用程序的自定义安全性(非大众市场网站)
我正在构建一个SaaS应用程序,在处理授权和ASP.NET MVC时遇到一些问题。我有一个前科,这是从那里的评论中得到的线索。我需要为每个用户提供某种粒度的安全性(例如大量权限)。我意识到,只要创建更多的角色,任何自由裁量系统都可以建模为角色系统。但这比我想处理的角色多得多。我认为角色不适合我,我希望在权限级别上做得更多 我知道,对于任何涉及ASP.NET和授权的问题,标准的回答是将所有应用程序用户创建为Windows用户,并实现ASP.NET成员资格提供程序。有一个问题,我不打算创建Windows用户。我的问题是,标准的ASP.NET MVC AuthorizeAttribute和AuthorizeCore能否与权限模型相匹配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
显然,这里的推动力是ASP.NET MVC缓存将破坏自定义安全实现。显然,我不希望我的页面运行缓慢,但我不确定我是否需要这种缓存。我正在构建一个业务应用程序;缓存所有东西真的合适吗?看来缓存只会使并发问题比现在困难得多。例如,如果我正在缓存所有的客户信息页面,包括编辑页面,那么我是否会破坏我所拥有的任何并发控制(比如,时间戳检查) 首先,您当然不需要让应用程序用户成为windows用户。默认的开箱即用MVC将它们作为用户存储在sql数据库中
通常不应缓存编辑页,因为在缓存寿命内,它们不会使用相同的数据多次加载。我的想法是MVC很容易添加缓存,我会先构建它,然后进行性能测试,看看这是否是必要的步骤。(请记住,除非您正在查看大量的客户端连接,否则通常更经济的做法是生成性能稍差的代码并增强服务器硬件。使用ASP.NET成员资格提供程序不需要创建Windows用户,它使用SQL表存储成员资格对象。是的,您可以使用例如,在只有“管理员”可以编辑的页面中,您将使用以下授权属性: [授权(Users=“Admin”)] 此外,您不希望缓存用户将要编辑数据的页面,请在指定给匿名用户(没有编辑权限的用户)的区域中使用缓存(您可以经常这样做)
希望这有帮助。如果我是你,我不会将用户创建为Windows用户,而是将其存储在SQL数据库中。因此,你现在可以完全控制如何将安全需求与用户关联 完成此操作后,您可以通过创建一个实现IAuthorizationFilter的类来创建自定义安全筛选器。这样,您就可以控制要执行的任何验证,基于角色、基于权限、基于星期几等等
然后,您只需使用新的自定义安全筛选器为您的服务方法添加属性,并传递您需要的任何信息,以确保调用用户具有执行该方法的适当权限/角色。谢谢,但这并不能真正回答我的问题。这仍然是关于角色的。我对Windows用户的评论只是出于不满我对很多答案感到困惑,所以我尽量不使用角色。