增加验证码校验

dev
smallchill 6 years ago
parent 6d87153399
commit d76bd3a7e4
  1. 17
      src/api/user.js
  2. 46
      src/page/login/userlogin.vue
  3. 2
      src/store/modules/user.js
  4. 1
      src/styles/login.scss

@ -1,21 +1,23 @@
import request from '@/router/axios';
import { baseUrl } from '@/config/env';
export const loginByUsername = (tenantId, username, password, type) => request({
export const loginByUsername = (tenantId, username, password, type, key, code) => request({
url: '/api/blade-auth/oauth/token',
method: 'post',
headers: {
'Tenant-Id': tenantId
'Tenant-Id': tenantId,
'Captcha-Key': key,
'Captcha-Code': code,
},
params: {
tenantId,
username,
password,
grant_type: "password",
grant_type: "captcha",
scope: "all",
type
}
})
});
export const refreshToken = (refresh_token, tenantId) => request({
url: '/api/blade-auth/oauth/token',
@ -29,13 +31,18 @@ export const refreshToken = (refresh_token, tenantId) => request({
grant_type: "refresh_token",
scope: "all",
}
})
});
export const getButtons = () => request({
url: '/api/blade-system/menu/buttons',
method: 'get'
});
export const getCaptcha = () => request({
url: '/api/blade-auth/oauth/captcha',
method: 'get'
});
export const getUserInfo = () => request({
url: baseUrl + '/user/getUserInfo',
method: 'get'

@ -34,11 +34,31 @@
<i slot="prefix" class="icon-mima"/>
</el-input>
</el-form-item>
<el-form-item prop="code">
<el-row :span="24">
<el-col :span="16">
<el-input size="small"
@keyup.enter.native="handleLogin"
v-model="loginForm.code"
auto-complete="off"
:placeholder="$t('login.code')">
<i slot="prefix" class="icon-yanzhengma"/>
</el-input>
</el-col>
<el-col :span="8">
<div class="login-code">
<img :src="loginForm.image" class="login-code-img" @click="refreshCode"
/>
</div>
</el-col>
</el-row>
</el-form-item>
<el-form-item>
<el-button type="primary"
size="small"
@click.native.prevent="handleLogin"
class="login-submit">{{$t('login.submit')}}</el-button>
class="login-submit">{{$t('login.submit')}}
</el-button>
</el-form-item>
</el-form>
</template>
@ -47,6 +67,7 @@
import {mapGetters} from "vuex";
import website from '@/config/website';
import {info} from "@/api/system/tenant";
import {getCaptcha} from "@/api/user";
export default {
name: "userlogin",
@ -54,10 +75,20 @@ export default {
return {
tenantMode: website.tenantMode,
loginForm: {
//ID
tenantId: "000000",
//
username: "admin",
//
password: "admin",
type: "account"
//
type: "account",
//
code: "",
//
key: "",
//
image: "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",
},
loginRules: {
tenantId: [
@ -76,13 +107,22 @@ export default {
},
created() {
this.getTenant();
this.refreshCode();
},
mounted() {
},
mounted() {},
computed: {
...mapGetters(["tagWel"])
},
props: [],
methods: {
refreshCode() {
getCaptcha().then(res => {
const data = res.data;
this.loginForm.key = data.key;
this.loginForm.image = data.image;
})
},
showPassword() {
this.passwordType === ""
? (this.passwordType = "password")

@ -47,7 +47,7 @@ const user = {
//根据用户名登录
LoginByUsername({commit}, userInfo) {
return new Promise((resolve, reject) => {
loginByUsername(userInfo.tenantId, userInfo.username, userInfo.password, userInfo.type).then(res => {
loginByUsername(userInfo.tenantId, userInfo.username, userInfo.password, userInfo.type, userInfo.key, userInfo.code).then(res => {
const data = res.data;
if (data.error_description) {
Message({

@ -180,4 +180,5 @@
line-height: 38px;
text-indent: 5px;
text-align: center;
cursor:pointer!important;
}

Loading…
Cancel
Save