我正在使用 Visual Studio 2011 beta 开发一个新的 asp.net mvc4 项目,并试图了解整个安全问题。它是一个内部 Intranet 应用程序,最初将使用单点登录,因此(还)不会提示用户输入 Windows ID/密码。该公司有一个自定义应用程序,用于存储不同应用程序的角色,并可通过存储过程调用获得。它将获取用户的登录 ID 并返回某种包含角色的集合,例如“MyApp.Data”、“MyApp.User”、“MyApp.Admin”。那么这指的是什么 - 这是自定义成员资格提供程序、自定义角色提供程序还是其他什么?
我一直在阅读有关授权、身份验证、成员资格、角色等的所有细节,目前我看不到树木的木材。我读过现有的 ASP.NET 安全对象已经过试验和测试,除非有非常复杂的要求,否则内置的就足够了,所以我很乐意使用已经存在的东西。
因此,如果用户已经登录到网络,这意味着他们已经过身份验证 - 对吗?如果是这样,那么我只需要实现授权。是否需要用 Authorize 属性来装饰每个 Controller 或 Action?如果是这样,如果我从自定义角色存储应用程序中检索角色,[Authorize(Roles = "ABC")] 的“ABC”部分如何设置?
我阅读了几篇文章和博客文章,包括 Jon Galloway 的这篇文章,但最后我迷路了:
Customizing Authentication and Authorization The Right Way
这么多问题......如果有人知道所有这些如何联系在一起的良好高级描述,那么我会全神贯注:)
最佳答案
好的,如果没有一个答案可以对所有这些是如何联系在一起的,我想我会草草写下我的发现:
http://blogs.msdn.com/b/rickandy/archive/2012/03/23/securing-your-asp-net-mvc-4-app-and-the-new-allowanonymous-attribute.aspx
所以在 Global.asax 我要补充:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new System.Web.Mvc.AuthorizeAttribute()); //new
}
http://msdn.microsoft.com/en-us/library/9ab2fxh0.aspx
创建表角色
(
角色名称文本 (255) 非空,
应用程序名称文本 (255) 非空,
CONSTRAINT PKRoles PRIMARY KEY (Rolename, ApplicationName)
)
创建表用户角色
(
用户名文本 (255) 非空,
角色名称文本 (255) 非空,
应用程序名称文本 (255) 非空,
约束 PKUsersInRoles 主键(用户名、角色名、应用程序名)
)
关于authentication - ASP.NET MVC4 安全、身份验证和授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10742709/