Asp.net mvc .NET自定义成员身份与自定义登录/注册:身份验证/授权

Asp.net mvc .NET自定义成员身份与自定义登录/注册:身份验证/授权,asp.net-mvc,session,asp.net-membership,authorization,Asp.net Mvc,Session,Asp.net Membership,Authorization,当我创建一个需要注册和登录的站点时,为了快速而不需要太多的要求,我会使用带有[授权]属性的成员资格等等。它的工作原理很好。但现在我想要更多的东西。基本上,我正在使用ASP.NET MVC EF CodeFirst开发一个站点,并希望创建一个用户实体,以持久保存到包含更多信息的数据库中。注册时所需的此类信息将具有其他属性,如名字、姓氏、性别、国家等 我试着阅读了一下实现自定义成员资格提供程序和成员资格用户等等。。。我已经走了这么远,但最终没有按照我想要的方式走到一起。现在,当我用PHP或ASP.N

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

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

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

FormsAuthentication.SetAuthCookie(model.UserName, createPersistentCookie: false);
这和…有什么区别

Session["username"] = model.UserName

您是否考虑过简单地为您的应用程序创建一个自定义/对象,并使用您希望从“用户”对象获得的属性对其进行扩展,而不是采用成员资格提供商的方式(我个人不喜欢它,并且觉得它对我的应用程序来说太沉重了)

与其深入细节,还不如说已经有了一些很好的资源来涵盖这一概念:

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


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

好吧,我想我要去做更多的阅读。。。似乎每次我认为我已经决定了一些事情,一些其他的建议,我永远不知道该走哪条路,以确保在长期最佳性能。。。谢谢你的回答。我忘了提到的一件事是,使用FormsAuthentication并设置当前IIdentity和IPrincipal将允许你在每次请求时访问“当前用户”(类似于你的php注释)。例如,要获取当前“用户名”,只需在控制器中使用User.Identity.Name。