当前位置: 首页 > 面试题库 >

AngularJS:与服务器端验证集成

侯博易
2023-03-14
问题内容

我有一个角度应用程序,其中包含一个从示例中获取的保存按钮:

<button ng-click="save" ng-disabled="form.$invalid">SAVE</button>

这对于客户端验证非常有用,因为form.$invalid当用户解决问题时它会变为false,但是我有一个电子邮件字段,如果另一个用户使用相同的电子邮件注册,则该字段设置为无效。

一旦我将电子邮件字段设置为无效,就无法提交表单,并且用户无法修复该验证错误。所以现在我不能再使用form.$invalid来禁用我的提交按钮。

肯定有更好的办法


问题答案:

我在几个项目中都需要这样做,所以我创建了一个指令。最后花了一点时间将它放在GitHub上,以供任何需要嵌入式解决方案的人使用。

https://github.com/webadvanced/ng-remote-
validate

特征:

  • 直接使用Ajax验证任何文本或密码输入的解决方案

  • 与Angulars内置验证一起使用,可以通过formName.inputName。$ error.ngRemoteValidate访问

  • 节流服务器请求(默认为400毫秒),可以使用 ng-remote-throttle="550"

  • 允许HTTP方法定义(默认POST)与 ng-remote-method="GET"

要求用户输入当前密码和新密码的更改密码表单的示例用法:

<h3>Change password</h3>
<form name="changePasswordForm">
    <label for="currentPassword">Current</label>
    <input type="password" 
           name="currentPassword" 
           placeholder="Current password" 
           ng-model="password.current" 
           ng-remote-validate="/customer/validpassword" 
           required>
    <span ng-show="changePasswordForm.currentPassword.$error.required && changePasswordForm.confirmPassword.$dirty">
        Required
    </span>
    <span ng-show="changePasswordForm.currentPassword.$error.ngRemoteValidate">
        Incorrect current password. Please enter your current account password.
    </span>

    <label for="newPassword">New</label>
    <input type="password"
           name="newPassword"
           placeholder="New password"
           ng-model="password.new"
           required>

    <label for="confirmPassword">Confirm</label>
    <input ng-disabled=""
           type="password"
           name="confirmPassword"
           placeholder="Confirm password"
           ng-model="password.confirm"
           ng-match="password.new"
           required>
    <span ng-show="changePasswordForm.confirmPassword.$error.match">
        New and confirm do not match
    </span>

    <div>
        <button type="submit" 
                ng-disabled="changePasswordForm.$invalid" 
                ng-click="changePassword(password.new, changePasswordForm);reset();">
            Change password
        </button>
    </div>
</form>


 类似资料:
  • 问题内容: 进行客户端或服务器端验证哪个更好? 在我们的情况下,我们正在使用 jQuery和MVC。 在我们的视图和控制器之间传递的JSON数据。 我所做的许多验证工作都是在用户输入数据时对其进行验证。例如,我使用该事件来防止文本框中的字母,设置最大字符数,并且该数字在一定范围内。 我想更好的问题是,与客户端相比,进行服务器端验证是否有任何好处? 真棒的答案大家。我们拥有的网站受到密码保护,并且用

  • 问题内容: 我试图了解如何执行以下操作: 声明表单的可接受方式是什么。我的理解是,您只需用HTML声明表单,并添加ng-model指令,如下所示: 要发送到服务器的内容。我可以将item对象作为JSON发送到服务器,然后对其进行解释。然后,我可以对对象执行验证。如果失败,则抛出JSON错误,然后发回确切的信息?有接受的方式吗?如何以一种很好的方式将验证错误从服务器推送到客户端? 我确实需要一个示例

  • 我试图了解如何做以下事情: 声明表单的公认方式是什么。我的理解是您只需用超文本标记语言声明表单,然后添加ng-model指令,如下所示: 发送到服务器的内容。我可以将item对象作为JSON发送到服务器,并对其进行解释。然后我可以对对象执行验证。如果失败,我抛出一个JSON错误,并返回具体内容?有没有公认的方法?如何以一种好的方式将验证错误从服务器推送到客户端? 我真的需要一个例子,但是Angul

  • 问题内容: 我正在建立一个使用RESTful API(Jersey)的AngularJS网络应用程序。 在服务器端,我正在使用Java应用程序服务器(详细来说是Glassfish 4)。 我的设置如下: AngularJS Webapp作为单个war文件部署到Java EE应用程序服务器。 RESTfulAPI(和后端逻辑)也作为war文件部署到同一Java EE应用程序服务器。 AngularJ

  • 验证 SSH 服务器证书(客户端) 和 SSH 用户证书 类似,使用客户端机构认证来验证主机。需要一个 SSH 服务器数字证书认证机构签发服务器证书,客户端只需要保存 CA 的公钥。 使用一台处于气隙系统下的计算机来生成服务器数字证书认证机构的根证书: ❯ ssh-keygen -C "SSH Server Certificate Authority" -f sshserver.root.ca 使

  • 我想用jwt流实现DocuSign服务集成身份验证。 我已经生成了有效的jwt(在jwt.io上验证),并且我可以根据https://docs.docusign.com/esign/guide/authentication/oa2_jwt.html#requesting-访问令牌 我在这篇博文中发现:https://www.docusign.com/blog/dsdev-docusign-deve