【发布时间】:2013-10-14 19:39:49
【问题描述】:
我有一个尚未发布的项目,但我不会很快发布,但几天前我将它从 mvc3 移到了 mvc4,在阅读时我看到了这个新的安全提供程序 SimpleMembership。
我现在实现安全的方式是使用MembershipProvider 和FormsAuthentication:
- 我已经实现了 ICustomPrincipal
- 我已经实现了 CustomPrincipalSerializeModel
- 我已经实现了 IPrincipal
注册用户我使用:
MembershipCreateStatus status;
Guid g = Guid.NewGuid();
Membership.CreateUser(model.User.Email.Trim(), model.Password.Trim(), model.User.Email.Trim(), null, null, true, g, out status);
if (status == MembershipCreateStatus.Success)
...
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(
1,
tUser.Email,
DateTime.Now,
DateTime.Now.AddDays(60),
true,
userData);
string encTicket = FormsAuthentication.Encrypt(authTicket);
HttpCookie faCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
Response.Cookies.Add(faCookie);
...
但正如我所见,SimpleMembership 看起来更干净,我想将项目移至它
但我对此有一些疑问:
1) 我对所有数据库操作都使用存储过程,我根本不使用 EF。如果我使用 SimpleMembership 是否可以在没有 EF 的情况下使用它?
2) 我是否需要为现实世界的应用程序构建自定义 SimpleMembership?
3) 我看到它为数据库创建表。我有我的表Users, Profiles, Roles and UsersInRoles 我可以将它应用到我的自定义架构吗?
4) 如果我想调用 WebSecurity.CreateAccount(...) 并且我想从负责调用创建用户的存储过程的域项目中调用一些我的自定义方法,我是否必须将其自定义并如果我必须这样做,是否有一些资源可以解释如何为用户和角色定制?
【问题讨论】:
-
我要说的是“如果它没有坏,就不要修理它。”
-
所以这个新的 SimpleMembership 并不优于 FormsAuthentication?
-
我不能肯定地说,我只是说在您的项目中此时将其放入的风险级别很高。当前的解决方案有效,我建议不要管它。
-
我认为是。更可定制并支持 OAuth。如果您想尊重 Facebook 和 Google 登录,OAuth 会非常有用。也就是说,@neoistheone 的观点同样有效。如果它没有坏...
-
会员提供者和简单会员之间的主要区别在于,对于会员提供者,您使用 Microsoft 为您提供的架构,在简单会员的情况下,您可以更改架构以支持所需的任何其他字段例如,oauth 支持。实体框架支持存储过程
标签: c# asp.net-mvc asp.net-mvc-4 asp.net-membership simplemembership