使用 vue 和 laravel API 管理用户会话数据的良好实践



我正在构建一个single-page applicationVuelaravelAPI 作为后端。 我已经尝试了一些像 Vue Session 这样的packages并且效果很好,但是在几乎每个API调用中,我总是需要发送 2 或 3 个参数,这些参数将始终相同(存储在vue-session中(,例如user_idcompany_id。我曾经在其他应用程序中使用通用PHP sessions(Zend_SessionZend Framework(来管理它,这样我始终将这些信息存储在我的backendsession中,并且不需要每次都发送它frontend

这是我过去如何使用PHP session

的示例
$model->insert(array(
'user_id' => $this->session->user_id, //stored in session
'company_id' => $this->session->company_id, //stored in session
'field1' => $this->getParam('field1'), //frontend param (ajax)
'field2' => $this->getParam('field2') //frontend param (ajax)
));

这就是我如何用VueLaravel

const data = {
user_id: this.$session.get('user_id'), //this is what i'm trying to get rid of
company_id: this.$session.get('company_id'), //this is what i'm trying to get rid of²
field1: this.field1,
field2: this.field2
}
axios
.post('/api/some/endpoint', this.data)
.then(resp => {
//...//
})

基本上,在这个例子中,我不想总是发送user_idcompany_id作为postparam

在这种情况下,有没有办法获得更好的代码"重用"?

1、您可以将会话数据保存在 cookie 中。浏览器会自动将您的 cookie 发送到服务器。不要忘记在用户注销时删除cookie。

2、如果你还想使用 Vue 会话或者其他存储,你可以轻松创建一个包装你的 post 方法的方法,并将用户的信息添加到有效负载中

function postRequest(url, payload) {
payload.user_id = this.$session.get('user_id')
payload.company_id = this.$session.get('company_id')
return axios.post(url, payload)
}

每当您想发帖时,请使用此方法。

最新更新