MVC3注册表最佳实践

时间:2012-07-30 17:21:40

标签: c# asp.net asp.net-mvc-3

我正在创建一个简单的注册表单,我想知道是否有人可以给我一些最佳实践列表。我知道注册表单可能会有所不同,但可能会有一些指导或事项需要注意漏洞。我的数据访问层将使用Entity FrameWork和linq来处理查询。

我认为有意义的做法:

  • 在将模型绑定到业务对象时验证表单(最好的方法是什么?)
  • 服务器端验证和客户端验证
  • 检查SQL注入? (关于此的任何最佳做法?)
  • 对我的客户经理对象使用依赖注入

我的注册字段如下:

  • 名字
  • 姓氏
  • 电子邮件(必须是一封电子邮件,必须是来自少数网站的电子邮件,即@ gmail.com,@ yahoo.com,@ live.com)
  • 学校
  • 密码
  • 状态(静态下拉3个左右的选项)

我也非常喜欢电子邮件激活,用户必须转到他或她的电子邮件才能激活他们的帐户。

2 个答案:

答案 0 :(得分:2)

  • 使用System.ComponentModel.DataAnnotations namesapce 验证您的视图模型。
  • 是的,进行服务器端和客户端验证
  • 实体框架已处理SQL注入
  • 考虑使用"验证码"如果您担心机器人会发送垃圾邮件 表格提交

对于电子邮件部分:

过去,我创建了一个数据库表,用于将电子邮件映射到随机生成的字符串。当您发送完整的注册电子邮件时,请提供使用该随机字符串或guid或其他内容的链接:

mydomain/completeregistration/7593098573903 whatever

现在,一旦客户端关注该链接,并且您处理该请求,请在数据库中将其注册标记为完成。 (这也应该会阻止对该URL的后续请求)

答案 1 :(得分:2)

使用客户端和 Serverside 验证。永远不要只信任客户端验证

使用DataAnnotations和jQuery验证插件。您不需要编写客户端验证功能。当您使用HTML Helper方法呈现HTML元素时,MVC将执行此操作。

Entity Framwork将构建参数化查询。所以你不必担心SQL注入。但是如果您使用Entity框架手动执行SQL语句/存储过程,则您有责任对其进行参数化。