tianof427795737
tianof427795737
2011-08-03 10:14

关于form注册时的验证 JS ajax 还是后台JAVA 验证 JS+ajax的验证很多容易被绕过

已采纳

如题:
关于form注册时的验证 JS ajax 还是后台JAVA 验证
JS验证只能验证合法性 email之类的唯一性验证可以走AJAX,但是大部分可以绕过的,后台的MVC我用的是struts2,但是牛逼的公司都是自己的MVC技术,这个就不谈了,struts2的验证拦截器的话验证比较方便,而且不能被用户认为的绕过,但可能用户体验差一些

我的问题是:各位是走哪种验证比较多?我看过新蛋网的注册页面,他们也是用JS+AJAX不过,人家用的https协议,我也绕不过去(用查看源代码的方式找到url直接访问),可能人家也做了拦截器之类的操作

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

10条回答

  • myali88 myali88 10年前

    验证接口可以采用抛出异常的形式,不符合验证逻辑的就抛出异常,为了简单起见,不用为每个验证域定义一个异常类,可以用一个比较泛的类,比如UserValidationException,然后定义errorCode和message属性,分别表示具体的验证域和默认的错误消息。
    任何地方验证时,捕获该异常,如果不特别关心验证错误的域,直接把该异常的message输出到客户端响应即可;如果需要定制验证message,可以捕获异常,然后自己向客户端添加验证错误提示。

    点赞 评论 复制链接分享
  • iteye_19265 iteye_19265 6年前

    [color=darkblue][code="java"][b][img][table]
    |[flash=200,200][flash=200,200][url][img][img][img][img][img][img][img][list]|
    |[*][list]|
    |[*][*][code="java"][quote][u][i][b][/b][/i][/u][/quote][/code]|
    |[*][/list]|
    |[/list][/img][/img][/img][/img][/img][/img][/img][/url][/flash][/flash]|
    [/table][/img][/b][/code][/color]

    点赞 评论 复制链接分享
  • redstarofsleep redstarofsleep 10年前

    要用struts的验证框架其实也是可以的。验证完成后指向一个jsp么,这个jsp上你可以去掉所有的html标签,只留下你要返回的消息就可以了。

    点赞 评论 复制链接分享
  • redstarofsleep redstarofsleep 10年前

    呵呵,那你ajax验证就不要写在validate里,写在action里,调用共通的验证逻辑。这个action就这个功能嘛!

    点赞 评论 复制链接分享
  • myali88 myali88 10年前

    把数据验证逻辑抽离出来,不管是ajax验证还是业务处理时在验证都可以调用相同的逻辑,不需要重复。可以考虑Java Bean Validation框架,或者自己写一个。
    之所以要在业务操作前再校验,主要是因为考虑客户端跳过ajax验证,比如禁用js(新蛋网,没有js基本不可用,渐进增强做的不够好),所以在业务层再次校验。

    点赞 评论 复制链接分享
  • redstarofsleep redstarofsleep 10年前

    “因为要提交的东西很多,在action写很多单独的字段接收我觉得后台的代码太冗余了”
    ------>这个的话,可以把这些参数封装在一个类里,action里get/set的就是这一个类,类似于struts1的Form对象。

    你验证数据的代码应该是共通的嘛,Ajax验证请求果类,走validate,然后调用共通代码验证,
    提交数据的请求过来,走validate,然后也是调用这个共通的验证代码啊。。。

    点赞 评论 复制链接分享
  • anliguo131 anliguo131 10年前

    前台验证只是合法性的验证,并不能保证数据的一致性的要求,

    如果两个用户同时用一个名字注册,这时候前台验证了,后台不验证就乱了

    数据一致性无法保证

    点赞 评论 复制链接分享
  • myali88 myali88 10年前

    同意楼上的观点。对于影响业务的数据都必须在业务操作前再做验证!

    点赞 评论 复制链接分享
  • redstarofsleep redstarofsleep 10年前

    两种验证都要
    Ajax验证用于增强用户体验。
    提交时再验证是保证数据的合法性。

    点赞 评论 复制链接分享
  • greenbamboo1111 greenbamboo1111 10年前

    看网站的类型,如果涉及交易对安全比较看重的,后台校验是肯定有的,如果只是一般的应用,但是对UI很看重的,只用前端的校验就可,当然对于一些大公司,两者是都有的

    点赞 评论 复制链接分享