【问题标题】:Is it possible to secure an input that can be both readonly or not in angular?是否可以保护既可以是只读的也可以不是角度的输入?
【发布时间】:2016-08-30 17:59:16
【问题描述】:

简介

我有一个表单中的输入,其中变量分配给 ng-model 属性。 有几个按钮具有不同的操作,最终可以提交具有不同结果的表单。出于这个原因,我添加了 novalidate 属性。

以下是代码示例:

<form ng-submit="submitFunc()" novalidate>
  <input type="text" ng-model="good.category" ng-readonly="good.id"/>
  ...
  <button ng-click="action1()" ng-disabled="missingInfo()">save</button>
  <button ng-click="action2()" ng-disabled="!good.info1">'loose' save</button>
  <button ng-click="delete()" ng-if="good.id" type="button">delete</button>
  <button ng-click="action3()" ng-if="isSpecial">Add caracteristic</button>          

我使用此表单从头开始注册商品,但我也可以修改现有的。

如果我创造商品,则包含对象类别的输入将是必填。 但如果我要修改它,类别应该是不可更改

确保安全

我已经使用了 "readonly" (EDIT: ng-readonly="good.id") 属性使得无法修改类别,但我的问题是:

关于可能的 html 操作,您如何确保此输入安全?

我所说的安全是指无法为现有对象赋予新类别。

编辑:考虑 Quertiy 的答案: ng-readonly 指令在多大程度上比简单的只读属性更安全?

提前感谢您的回答!

【问题讨论】:

    标签: angularjs forms security angularjs-directive readonly


    【解决方案1】:

    关于可能的 html 操作,您如何确保此输入安全?

    确保应用程序安全的唯一方法是在服务器端验证数据。
    如果出现id,只需删除category

    但如果我要修改它,类别应该永远不可更改。

    ng-requiredng-disabled 接受布尔值作为参数。以某种方式使用它:

    <input ng-model="good.category" ng-disabled="good.id" ng-requred="!good.id">
    

    【讨论】:

    • 感谢您的回答。 --- 事实上我不能使用 ng-required 因为我已经在表单本身上有 novalidate 属性。 --- 我有很多提交按钮,每个按钮都有不同的行为。 --- 我想你证实了我的想法。 --- 我应该在控制器中添加更多验证以删除不需要的信息?
    • @RomainVincent, novalidate 不会影响角度验证器。
    • 你的意思是如果我放一个 ng-required,它的作用不仅仅是在表达式等于 true 时添加一个 required 吗?
    • @RomainVincent,是的,当然。 Angular 验证不同于原生浏览器验证。
    猜你喜欢
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 2012-07-04
    相关资源
    最近更新 更多