在ASP.NET中开发自定义登录/身份验证系统的最佳方法是什么

Jon*_*han 5 .net forms authentication login

我正在开发的网站将允许用户在3个级别登录.

1级 - 未登录

2级 - 他们注册他们的电子邮件地址并收到确认电子邮件,并以此方式登录.

级别2 - 他们使用用户名/密码登录,然后将其发送到Web服务.如果Web服务返回"成功登录"结果,则会登录到网站.

根据登录级别,某些网页将可用,而其他网页将受到限制.

我的问题是,我应该如何发展这个?

我在ASP.NET MVC中做这个项目.

我应该只编写自己的AccountController吗?我应该使用.NET Forms身份验证吗?使用.NET代码手动执行表单身份验证有什么好处?

如果我自己这样做,在成功登录后,我只是将登录用户存储在会话变量中.这样做有什么害处,或者我正在做什么,是否可以?

Dan*_*boo 1

我强烈建议不要推出自己的身份验证系统。.net Forms auth 非常容易使用;你为什么要浪费时间自己建造呢?身份验证系统存在很多陷阱,除非您是 MS,否则您确实没有资源来构建和测试系统。

确定用户可以看到哪些页面是授权,您当然可以按照自己的方式进行编码。我建议研究 .net 中提供的 Identity/Principal 接口并重写“IsInRole”方法以满足您的需求。

会话对于安全性来说并不是很好。它们在网络场场景中效果不佳,并且当应用程序池决定回收时......您的所有用户都将被注销。.net forms auth 默认使用 cookie。