5

当我创建一个需要注册和登录的站点时,为了快速而不需要很多要求,我将使用具有 [Authorize] 属性的会员资格等等。适用于它的工作。但现在我想要更多的东西。基本上我正在使用 ASP.NET MVC EF CodeFirst 开发一个站点,并希望创建一个用户实体以持久保存到包含更多信息的数据库。注册时所需的此类信息将具有其他属性,例如名字,姓氏,性别,国家/地区等...

我已经尝试阅读实现自定义 MembershipProvider 和 MembershipUser 等...我已经走了这么远,但它最终并没有按照我想要的方式组合在一起。现在,当我使用 PHP 或其他时间使用 ASP.NET 开发站点时,我将创建我的 User 类并为他提供注册页面所需的所有属性,然后将其推送到数据库。然后,当我登录时,我只需获取用户名或电子邮件和密码,然后创建一个会话变量来指示用户是否被授权。

这可以吗?我只是不明白为什么整个会员资格问题比看起来要复杂得多,所以我觉得我错过了这一切的重点。另外,我注意到在 ASP.NET MVC Web 应用程序中,当您通过身份验证时,它会写出这一行......

FormsAuthentication.SetAuthCookie(model.UserName, createPersistentCookie: false);

那和这有什么区别...

Session["username"] = model.UserName
4

1 回答 1

2

您是否考虑过简单地为您的应用程序创建一个自定义IPrinicipal / IIdentity对象并使用属性扩展它们你想从你的“用户”对象?

在 SO 上已经有一些很好的资源涵盖了这个概念,而不是深入细节:ASP.NET MVC - Set custom IIdentity or IPrincipal

关于您的问题,Session["username"]只是一个会话cookie。您将失去 FormsAuthentication 的所有好处。例如,对于表单身份验证,如果用户请求的页面需要经过身份验证的访问并且该用户之前没有登录到该站点,则用户将被重定向到使用表单身份验证配置的登录页面。

Session["username"]您需要手动滚动身份验证的各个方面。我强烈建议不要这样做。

于 2012-06-13T02:31:16.827 回答