2012-08-15 34 views
1

我是C#和ASP.NET(不是MVC)的新手,并试图编写一个网站。ASP.NET登录,授权和会话管理方法

这里是问题: 哪一个是登录,授权和会话管理的最佳方法?我不问如何使用内置的成员资格类或其他即用型解决方案。我只是要求一个手动的方法或方法。

成员写入用户名和密码后点击提交按钮;你认为这是最好的解决方案,以保持用户在他浏览页面,点击按钮或以某种方式与网站交互时保持登录

例如,它是一个很好的方法来使用会话并编写用户名,Id等。会话并在每个页面请求中读取会话以检查是否有任何会员信息;如果是,请根据会员的喜好设置页面布局?

或者在登录时创建一个对象,根据登录的用户设置它的属性,并在整个会话中使用相同的对象并在注销时销毁它?

THX

+3

这有什么错内置登录? – 2012-08-15 07:54:19

+0

@AmiramKorach太多了,你需要使用自己的模式! user1599986请[阅读此答案](http://stackoverflow.com/a/5702000/28004) – balexandre 2012-08-15 08:28:21

+0

永远不要玩安全。我无法强调足够的安全性和经过验证的解决方案在框架中已经存在。 – 2012-08-15 18:04:25

回答

3

我建议,最好的办法是使用已被证明realiable预exisitng解决方案。

要进行验证,请使用MemberShipProvider。如果您不想使用例如SqlMembershipProvider,请随时通过从System.Web.Security.MembershipProvider派生出来实现您自己的目标。然后在您的应用程序的web.config文件中注册自定义提供程序。

要开始,只需在网上搜索“建立自定义会员供应商”,你会发现很多教程。

要获得授权,请使用web.config中的<authorization>...</authorization>部分提供的可能性。确保了解在应用程序的子文件夹中放置其他web.config文件的可能性。

如果您需要基于角色的授权,请使用RoleProvider。相关网页搜索:“构建自定义角色提供商”。

如果要允许用户存储首选项,请使用ProfileProvider

总之,抵抗reinventing the wheel的诱惑...

+1

我很欣赏你的答案,但我不想重新发明轮子,但试图了解轮子是如何工作的。使用集成解决方案总是简单省时,但我相信在解决方案不适用的情况下,应该知道其他生存方式 – user1599986 2012-08-15 08:49:16