Javascript 将密码字段绑定到Vue中的数据对象属性是否安全?

Javascript 将密码字段绑定到Vue中的数据对象属性是否安全?,javascript,vue.js,Javascript,Vue.js,这个问题让我有点烦 假设我想构建一个登录组件,用于我的应用程序(使用Vue),其中有两个预期的输入字段,一个用于用户ID,另一个用于密码。在这个问题的上下文中,需要特别关注的是密码输入字段 <input id="password" type="password" class="field-input"> 我知道您可以使用v-model进行双向绑定(使用v-bind进行单向绑定),但问题是密码“是否应该”以这种方式将其绑

这个问题让我有点烦

假设我想构建一个登录组件,用于我的应用程序(使用Vue),其中有两个预期的输入字段,一个用于用户ID,另一个用于密码。在这个问题的上下文中,需要特别关注的是密码输入字段

<input id="password" type="password" class="field-input">


我知道您可以使用v-model进行双向绑定(使用v-bind进行单向绑定),但问题是密码“是否应该”以这种方式将其绑定到数据对象?安全吗?这是否意味着密码将以明文形式存储在数据对象中?如果这不是一种安全的方法,那么还有其他方法吗?

从技术上讲,您可以这样做,但最好不要在客户端保存密码

使用代币。如果您需要一些复杂性和注意事项,请使用JWT。但只要使用代币就行了。就像一个安全生成的字节列表,编码为字符串,然后将其保存在该客户端上作为cookie或
localStorage
并将其与所有请求一起发送

当用户键入用户名和密码时,您点击授权API端点,如果凭据良好,则在数据库中创建一个会话,并将其与您创建的此安全令牌关联。当发出请求时,您可以查找会话,确保会话仍然有效/未过期,并且您知道该会话属于哪个用户,以便对其进行“身份验证”

另外,请使用HTTPS并阅读有关授权与身份验证的信息

使用密码“应该”以这种方式将其绑定到数据对象吗

绝对是!根据Vue

虽然有点神奇,但v-model本质上是一种语法糖,用于更新用户输入事件的数据,并特别注意一些边缘情况。。。v-model在内部使用不同的属性并为不同的输入元素发出不同的事件-text和textarea元素使用value属性和输入事件

使用下面的数据函数属性

data(){
返回{
密码:“”,
}

}
如果您确实知道密码是什么,那么它就根本不安全。您应该只存储散列并根据它验证密码