需要ASP.NET身份验证建议

时间:2013-07-14 21:11:14

标签: asp.net-mvc-4

我正在构建几个将共享数据库的ASP.NET MVC网站(因为它们共享数据库)。也就是说,目前不会共享站点之间的登录。作为参考,我正在使用NHibernate与SQL Server进行数据访问(目前)。

按照目前的布局,系统有“站点”,“角色”,“用户”和“权限”表。站点具有用户,权限和角色集。用户可以担任多个角色。角色拥有一系列权利。用户可以使用用户名和密码登录,但我不想把自己描绘成一个角落 - 我可能希望他们以后可以使用谷歌或Facebook登录。

现在,我对于保护网站的路径感到困惑。出于几个原因,我并不喜欢旧学校会员和角色提供者。其中最主要的是我不会通过角色限制很多事情;将根据用户访问权限限制事物。我正在考虑以下几种情况进行身份验证。 1)我希望能够通过属性指定使用控制器方法所需的权限。 2)我希望能够快速查询并查看用户是处于特定角色还是具有特定权限。

所以,我实际上有一系列问题,但它们有点交织在一起。首先,我该怎么办?只是一个自定义授权属性?第二,登录等工作流程是什么?正常和安全地工作需要哪些步骤?

我意识到这些都是一些愚蠢的问题,但在过去,我已经接受了旧提供者的做事方式。我并不特别关心这一点,我真的想要一些更好的建议。所以我想我的一切都是新的。

1 个答案:

答案 0 :(得分:0)

我会像有害生物一样逃离MS的会员提供者。它在使用.NET 2.0时已经很糟糕了,最近的刷新并不是更好。

角色,用户,...不受会员提供商约束,您可以自行使用。设置Authentification,创建一个处理所述Authentification的httmodule(Context.User.Identity的简单userId就足够了)

您需要的只是一个来自IIdentity和您的httmodule

的用户
string[] roles = new[] {"Admin", "CoolDude"};
HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(user, roles);

..现在在你的mvc控制器中只需添加必要的身份验证属性,玩游戏!

制作自定义角色,自定义mvc属性或查询用户是否直接处于特定角色

if (HttpContext.Current.User.IsInRole("Admin")) { ...