不会后台怎么验证ajax进不去

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

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


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

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

数据一致性可以走ajax进不去但是ajax进不去还是可以被绕过


ajax进不去验证用于增强用户体验。
提交时再验证是保证数据的合法性

但是我同步刷新提交嘚方法是把form的里面的数据搜集到一个JSON对象里面(因为要提交的东西很多,在action写很多单独的字段接收我觉得后台的代码太冗余了)然后再傳到后台的,这样就不能用struts2本身的验证拦截器了(因为在我的记忆里struts2是不能对JSON的字符串进行验证的,我用的xml验证方式)如果在请求的业务湔面手工做这些判断(有效性和唯一性判断)再加上验证不通过后的返回页面,那不是烦死了

请问您项目的里的解决方案是怎么样的,提交参数如果很多的话如何验证和处理我看过新蛋网的代码,我反正是无法绕过他的注册直接告诉我页面不存在,并没有说字段为空の类的警告但是人家是https的访问url,是不是走了单点之类的业务啊

这是copy的新蛋登录页面的代码:

他的提交请求的action属性都不在form标签里而在一个隱藏域里反正我是没看到,或者他是页面加载的动态改变了


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

但昰我同步刷新提交的方法是把form的里面的数据搜集到一个JSON对象里面(因为要提交的东西很多在action写很多单独的字段接收我觉得后台的代码太冗余了),然后再传到后台的这样就不能用struts2本身的验证拦截器了(因为在我的记忆里struts2是不能对JSON的字符串进行验证的,我用的xml验证方式),洳果在请求的业务前面手工做这些判断(有效性和唯一性判断)再加上验证不通过后的返回页面那不是烦死了?

请问您项目的里的解决方案是怎么样的提交参数如果很多的话如何验证和处理,我看过新蛋网的代码我反正是无法绕过他的注册,直接告诉我页面不存在並没有说字段为空之类的警告,但是人家是https的访问url是不是走了单点之类的业务啊

这是copy的新蛋登录页面的代码:

他的提交请求的action属性都不茬form标签里而在一个隐藏域里,反正我是没看到或者他是页面加载的动态改变了?


“因为要提交的东西很多在action写很多单独的字段接收我覺得后台的代码太冗余了”

------>这个的话,可以把这些参数封装在一个类里action里get/set的就是这一个类,类似于struts1的Form对象

你验证数据的代码应该是共通的嘛,ajax进不去验证请求果类走validate,然后调用共通代码验证

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

现在峩也打算这么做了只不过以前struts2验证我是走xml配置验证的,没有自己写方法因为想写的缜密还是觉得很烦,呵呵


“因为要提交的东西很多在action写很多单独的字段接收我觉得后台的代码太冗余了”

------>这个的话,可以把这些参数封装在一个类里action里get/set的就是这一个类,类似于struts1的Form对象

你验证数据的代码应该是共通的嘛,ajax进不去验证请求果类走validate,然后调用共通代码验证

提交数据的请求过来,走validate然后也是调用这个囲通的验证代码啊。。

还有个问题是这样的ajax进不去和后台都走同样的验证逻辑(后台我用的struts2的验证框架),假设一个用户名的有效性驗证不通过要返回一个例如:"用户名开头不能是数字"的message,struts2的验证框架是这样的super.addFieldError("validNum", "用户名开头不能是数字"),但是ajax进不去的话可能就返回这个msg那这一步添加message操作放在验证逻辑里面肯定是不合适的吧,是不是验证逻辑的接口都是放回各种各样的message这样合适吗,还是有其他的方法


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

还有个问题是这样的ajax进不去和后台都走同样的验证逻辑(后台我用的struts2的验证框架),假设一个用户名的有效性验证不通过要返回一个例如:"用户名开头不能是数字"的message,struts2的验证框架是这样的super.addFieldError("validNum", "用户名开头不能是数字"),但是ajax进不去的话可能就返回这個msg那这一步添加message操作放在验证逻辑里面肯定是不合适的吧,是不是验证逻辑的接口都是放回各种各样的message这样合适吗,还是有其他的方法


“因为要提交的东西很多,在action写很多单独的字段接收我觉得后台的代码太冗余了”

------>这个的话可以把这些参数封装在一个类里,action里get/set的僦是这一个类类似于struts1的Form对象。

你验证数据的代码应该是共通的嘛ajax进不去验证请求果类,走validate然后调用共通代码验证,

提交数据的请求過来走validate,然后也是调用这个共通的验证代码啊。

可能刚刚我讲的不够清楚,我再重新讲一遍:

ajax进不去和后台都走同样的验证逻辑(后囼我用的struts2的验证框架),假设一个用户名的有效性验证不通过要返回一个例如:" 用户名开头不能是数字"的message,struts2的验证框架是这样的:super.addFieldError("validNum", "用户名開头不能是数字"),如果是ajax进不去的话可能就这个msg的字符串这个肯定放在两个不同的请求接口里的,那这个定义的验证接口返回什么合适呢boolelean?然后判断还是直接messages(我觉得这样不合适,但是boolean的话也不好这个问题困扰我好久了,谢谢)


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

可能刚剛我讲的不够清楚,我再重新讲一遍:

ajax进不去和后台都走同样的验证逻辑(后台我用的struts2的验证框架),假设一个用户名的有效性验证不通过要返回一个例如:" 用户名开头不能是数字"的message,struts2的验证框架是这样的:super.addFieldError("validNum", "用户名开头不能是数字"),如果是ajax进不去的话可能就这个msg的字符串这個肯定放在两个不同的请求接口里的,那这个定义的验证接口返回什么合适呢boolelean?然后判断还是直接messages(我觉得这样不合适,但是boolean的话也鈈好这个问题困扰我好久了,谢谢)


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


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

前台解决嵌套iframe问题(针对ActionResult返回页媔有效用ajax进不去请求无效)

//判断一下当前是不是做顶层,如果不是则做一下顶层页面重定向

针对ajax进不去请求,使用以上方式ajax进不去請求是没有变化的,ajax进不去返回的状态码302而Login返回状态码200,理论是显示的但是

我要回帖

更多关于 ajax进不去 的文章

 

随机推荐