关于三层架构的数据验证问题

lingrain 2010-04-26 11:28:19
按三层架构开发的网站,输入的数据,往往经过好多层才写入数据库。
而程序编写规范里,一般都要求验证输入数据的正确性。
我的问题是:
1.有没有必要在每个函数开头都验证一次?
2.如果不需要,最好在哪里负责统一验证,其他地方都免除验证?

谢谢。
...全文
215 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
深度Java 2010-04-26
  • 打赏
  • 举报
回复
一定要客户端验证的,因为用户可以把客户端验证屏蔽,这个很容易的!


[Quote=引用 4 楼 zx75991 的回复:]
引用 3 楼 mzmxchenweij 的回复:
在客户端就验证,必要时候在DAL层再验证一次

up
[/Quote]
天下在我心 2010-04-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 mzmxchenweij 的回复:]
在客户端就验证,必要时候在DAL层再验证一次
[/Quote]
up
Adechen 2010-04-26
  • 打赏
  • 举报
回复
在客户端就验证,必要时候在DAL层再验证一次
njw1028 2010-04-26
  • 打赏
  • 举报
回复
每个页面在Page_Load里的


if(!IsPostBack)
{
验证下就行
}
sxiaohui8709253 2010-04-26
  • 打赏
  • 举报
回复
在客户端就验证好 保证其正确性
xuan.ye 2010-04-26
  • 打赏
  • 举报
回复
正常来讲除了数据访问层,其他层都应该进行数据验证。

表示层 验证
用户界面 验证
业务逻辑 验证
数据访问 不验证
数据存储(数据库) 验证

这是Rockford 提出来的。
  • 打赏
  • 举报
回复
关于所谓的“客户端验证”要知道这跟业务逻辑时两回事。例如我们通过记录通讯录将用户手机电话等资料记录下来,那么“保存通讯录”这个Command被执行的时候可能会验证手机电话(或者比如说是BLL层每当调用DAL对一个对象进行Insert操作之前都会首先判断这个对象有没有IBeforeInsertTrigger接口,如果有则会调用其进行验证)。

但是,当表现层的录入通讯录功能界面调用BLL层及时验证用户录入的手机号码(例如及时判断几大移动公司已经放号的号,例如判断出:动感地带、电信CDMA等等)时,尽管跟BLL层保存通讯录的Command中的某些验证功能有重复,但是这也是单独的BLL功能。

不要掉进“它们只能选择一个地方验证”的陷阱里。
xuxiangyang 2010-04-26
  • 打赏
  • 举报
回复
在表现层用验证控件,或者在逻辑层写验证代码调用
baron 2010-04-26
  • 打赏
  • 举报
回复
应该在客户端和逻辑层进行验证.
  • 打赏
  • 举报
回复
DAL是绝对不应该验证,因为DAL就是一个傻瓜,仅仅处理数据库存取。而真正的表现层也不应该验证,因为表现层应该是个傻瓜,仅仅用来显示美工和用户行为模式(UI)技巧。最终是由BLL决定一切业务逻辑验证,表现层可以调用BLL层,例如通过ajax调用asmx来进行数据验证。
lingrain 2010-04-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 21aspnet 的回复:]
一定要客户端验证的,因为用户可以把客户端验证屏蔽,这个很容易的!

引用 4 楼 zx75991 的回复:
引用 3 楼 mzmxchenweij 的回复:
在客户端就验证,必要时候在DAL层再验证一次
up
[/Quote]

逻辑看得不是很清楚。
既然客户端验证很容易屏蔽,为什么说“一定要客户端验证”?
是不是想说的是“一定要服务器端验证”啊?

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧