zoukankan      html  css  js  c++  java
  • Vue获取Abp VNext Token

    Abp VNext默认没公开访问Token的Api,但有个问题Cookie方式如果是手机或桌面程序不如Token方便

    Axios默认是Json方式提交,abp登录需要使用application/x-www-form-urlencoded方式提交

    首先引入Axios

    import Axios from "axios"
    Vue.prototype.$axios = Axios
    //api访问基址
    Axios.defaults.baseURL = 'https://localhost:44364'

    Vue的Data数据

            data() {
                return {
                    form: {
                        grant_type: 'password',
                        scope: 'Mall',
                        username: 'admin',
                        password: '1q2w3E*',
                        client_id: 'Mall_App',
                        client_secret: '1q2w3e*'
                    },
                    rememberMe: false
                }
            }

    显示布局

            <el-form ref="form" label-width="80px">
                <el-form-item label="用户名:">
                    <el-input v-model="form.username"></el-input>
                </el-form-item>
                <el-form-item label="密码:">
                    <el-input type="password" v-model="form.password"></el-input>
                </el-form-item>
                <el-form-item>
                    <el-checkbox v-model="rememberMe">记住我</el-checkbox>
                </el-form-item>
                <el-button type="primary" @click="btnLogin">Login</el-button>
            </el-form>

    按钮登录事件

                btnLogin() {
                    //QS使用的目的
                    //正常用Json方式提交
                    //将对象序列化A=1&b=2&c=3这种方式提交
                    var qs = require('qs');
                    this.$axios.post('/connect/token', qs.stringify(this.form), {
                        headers: {
                            'Content-Type': 'application/x-www-form-urlencoded'
                        }
                    }).then(response => {
                        console.log(response)
                        // this.$router.push('/') 跳转
                        if (this.rememberMe == true) {
                            //如果记住我打钩将token保存在本地
                            // sessionStorage.setItem('access_token', response.data.access_token)//保存为本次会话
                            // localStorage.setItem('access_token', response.data.access_token);//永久保存,直到浏览器清除缓存
                            // 想用cookie保存需要引入vue-cookies
                            // import Vue from 'vue'
                            // import VueCookies from 'vue-cookies'
                            // Vue.use(VueCookies)
                            // 设置一个cookie
                            // this.$cookies.set(keyName, value[, expireTimes[, path[, domain[, secure]]]])
                        }
                    }).catch(error => {
                        console.log(error.response);
                    });
                }

    效果展示

  • 相关阅读:
    javascript 自定义事件
    javascript 实现HashTable(哈希表)
    NHibernate输出SQL语句
    Asp.net MVC Comet推送
    MySQL 数据备份与还原
    Mysql -- 慢查询
    cookie 的HttpOnly 和 Secure 属性
    Ubuntu -- 反射shell nc
    docker 访问宿主机网络
    k8s 配置文件 详解
  • 原文地址:https://www.cnblogs.com/liessay/p/13217521.html
Copyright © 2011-2022 走看看