thinkphp5+vue 接口api验证码方式
2017-12-19 18:52
465 查看
我们采用的token令牌的方式验证用户,最近搞了个验证码接口,前端使用的vue接收,遇到如下问题:thinkphp5框架默认生成的验证码是session方式给到前端用户,但是vue端没有接收session的方式,这个问题不知道是不是前端不会接收session,会接收的就不存在这个问题.我们将验证码生成改为方法cache缓存方式,thinkphp5自带的composer下载验证码captcha类,在生成验证的地方添加缓存,缓存加密保证安全,验证依旧使用接口的方式,大致方法就是这样,有好方法的朋友帮忙分享下.指导下我.
前端vue代码这把
<template>
<div>
<img src="http://域名/v1/verify" />
<!-- <img src="verify"> -->
<input type="text" v-model='code'>
<span @click='vyverify'>验证</span>
</div>
</template>
<script>
import store from "../store";
export default {
name: "test_verify",
data() {
return {
code: ''
};
},
created() {
// store.dispatch("verify");
// this.new_verify;
},
computed: {
verify() {
return store.state.verify;
},
new_verify() {
alert(this.verify.split('"'));
// let new_verify = this.verify.split(' ')[1];
// return new_verify;
},
},
methods: {
formData() {
let formData = new formData();
formData.append('code', this.code);
return formData;
},
vyverify() {
store.dispatch('vyverify', this.$qs.stringify({
code: this.code,
token: localStorage.getItem('tokens')
}));
// store.dispatch('Vyverify', this.formData)
}
}
};
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
</style>
单独给个方法指向到前端页面,后端的生成验证码的方法
public function getcode()
{
ob_clean();
$config = config('captcha');
$captcha = new Captcha($config);
return $captcha->entry();
}
验证端接口处理,你也可以放上面生成验证码方法控制器一起,按自己需求来,代码如下
public function vyverify(Request $request)
{
$param = $request->param();
$code = strtolower($param['code']);
if (empty($code)) {
$this->error('验证码不能为空');
}
$verifycode = Cache::pull('verifycode');
if(md5("$code") == base64_decode($verifycode)){
throw new SuccessMessage(['msg' => '验证码验证成功!']);
}else{
throw new ErrorException(['errorCode' => '10003', 'msg' => '验证码验证失败']);
}
}
前端vue代码这把
<template>
<div>
<img src="http://域名/v1/verify" />
<!-- <img src="verify"> -->
<input type="text" v-model='code'>
<span @click='vyverify'>验证</span>
</div>
</template>
<script>
import store from "../store";
export default {
name: "test_verify",
data() {
return {
code: ''
};
},
created() {
// store.dispatch("verify");
// this.new_verify;
},
computed: {
verify() {
return store.state.verify;
},
new_verify() {
alert(this.verify.split('"'));
// let new_verify = this.verify.split(' ')[1];
// return new_verify;
},
},
methods: {
formData() {
let formData = new formData();
formData.append('code', this.code);
return formData;
},
vyverify() {
store.dispatch('vyverify', this.$qs.stringify({
code: this.code,
token: localStorage.getItem('tokens')
}));
// store.dispatch('Vyverify', this.formData)
}
}
};
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
</style>
单独给个方法指向到前端页面,后端的生成验证码的方法
public function getcode()
{
ob_clean();
$config = config('captcha');
$captcha = new Captcha($config);
return $captcha->entry();
}
验证端接口处理,你也可以放上面生成验证码方法控制器一起,按自己需求来,代码如下
public function vyverify(Request $request)
{
$param = $request->param();
$code = strtolower($param['code']);
if (empty($code)) {
$this->error('验证码不能为空');
}
$verifycode = Cache::pull('verifycode');
if(md5("$code") == base64_decode($verifycode)){
throw new SuccessMessage(['msg' => '验证码验证成功!']);
}else{
throw new ErrorException(['errorCode' => '10003', 'msg' => '验证码验证失败']);
}
}
相关文章推荐
- vue2.x 通过后端接口代理,获取qq音乐api的数据
- PHP下使用CURL方式POST数据至API接口的代码
- 基于http协议的api接口对于客户端的身份认证方式以及安全措施
- api接口对于客户端的身份认证方式以及安全措施
- 客户联系方式接口与API导入
- php + redis 完成api接口的图形验证码
- 基于http协议的api接口对于客户端的身份认证方式以及安全措施
- vue中Axios的封装与API接口的管理详解
- PHP:CURL分别以GET、POST方式请求HTTPS协议接口api
- 应用程序接口有两种方式--API和协议
- thinkphp5.0调用云片接口实现发送短信验证码找回密码功能
- PHP下使用CURL方式POST数据至API接口的方法
- Spring-Boot -- RESTFUL风格的API接口的三种调用方式【测试】
- PHP下使用CURL方式POST数据至API接口的代码
- Thinkphp框架拓展包使用方式详细介绍--验证码实例(十一)
- 百度网盘上下载文件,调用api接口的请求方式和参数
- 利用Google API Enging做验证码的人工识别接口
- 基于http协议的api接口对于客户端的身份认证方式以及安全措施
- 飞信PHP接口|飞信PHP API免费发送手机短信接口,thinkphp发送单条函数
- PHP下使用CURL方式POST数据至API接口的方法