SignUp Form Validation: Frontend Javascript versus backend Python?

Roh*_*udu -4 javascript python client-server web-applications web

Client side Javascript versus Server Side Python

If I want to create a registration form, what are the pros and cons of validating - checking - for incorrect input- through each method. What do you recommend?

Thi*_*ter 9

需要服务器端(后端)代码来创建注册系统.您需要以某种方式创建用户并存储用户输入的数据,并且无法在客户端上完成.

混合服务器端和客户端端的最常见情况是这样的:

  • 使用客户端代码来改善用户体验.这意味着:初始验证,可能是AJAX请求,以检查所选用户名是否有效且可用.
  • 使用服务器端代码进行最终验证(您不能信任来自客户端的任何内容),并且显然最终通过创建新用户并将其存储在数据库中来执行实际注册.

假设您的绝大多数用户都启用了JavaScript,并且您也没有为那些不这样做的用户提供出色的用户体验,那么您可以通过在客户端提供详细的错误消息(例如,突出显示错误字段)简化操作.在服务器端验证失败的情况下,只显示一般错误消息的旁边验证逻辑.
但是,如果有些事情你无法在客户端上正确验证(即使他已经启用了JS,因为你可以使用AJAX),你应该确保服务器端验证确实显示了正确的错误消息,所以用户知道什么是错的.

如果用户没有提交任何大的内容(例如文件上传),并且在提交无效的情况下你有一些干净的方法来重新填充所有表单字段,那么最简单的解决方案就是只进行服务器端验证,因为这样可以避免创建验证逻辑两次(假设您没有某种方式以抽象的方式指定它,可以由服务器端和客户端代码访问).

另一种可能性 - 尤其是涉及密码字段时的好主意(对于良好的用户体验,您希望保留用户即使在提交错误后输入的内容)但从安全角度来看,您不应该发回用户的密码以避免其被缓存在某处) - 将使用AJAX提交整个表单,例如发回一个JSON有效负载,其中包含用户在成功时应重定向的URL或失败时的错误列表.这尤其具有以下优点:您可以轻松地编写服务器端代码,以便在发出AJAX请求时返回JSON有效负载,或者在正常请求的情况下返回完整的HTML页面.

  • 在安全方面,始终需要验证来自前端的数据,因为您的表单可能受到XHR攻击.在用户体验方面,前端验证可以节省用户等待来自后端的响应的时间,再加上一个好的JS UI框架(例如ExtJS,jQuery UI)将有助于改进您的表单. (2认同)