axios网络请求

 ?问题 :如何添加token,解决鉴权问题

  方案:通过登录页面,发送请求,获取到token值,并把token值存储(localStorage、sessionStorage、cookieStore),示例如下:

<template>
    <el-form label-width="80px">
        <el-form-item label="用户名">
            <el-input  v-model="loginForm.username"></el-input>
        </el-form-item>
        <el-form-item label="密码">
            <el-input type='password' v-model="loginForm.password"></el-input>
        </el-form-item>
//点击事件,注意下面对应的方法
        <el-button style="width: 100%;" type="primary" @click="submitLogin1" >登录</el-button>
  </el-form>
</template>
<script>
/*使用axios发送post请求
请求地址url: http://12xxxxx8:18899/login/
请求参数:
    username:test
    password:test123456
*/
// 使用前导入所需的依赖插件
import { useWindowScroll } from '@vueuse/core'
import axios from 'axios'
import qs from 'qs'
export default{
   
    data(){
        return{
            loginForm:{
                username:'',
                password:''
            }
        }
    },
    methods:{
  
async submitLogin(){
            // 利用封装的login方法,发送登录请求(/api/index.js 文件中)
            const response = await this.$api.login(this.loginForm)
           
            if(response.status===200){
                this.$message({
                    type:'success',
                    message:'登录成功!'
                })
               
                // 获取到token值
                const token = response.data.token

                // 下面三种保存token值位置方式(任选其一即可,亦可都保存)
                // 将token值保存到localStorage中
                // window.localStorage.setItem('token',token)

                // 将token值保存到sessionStorage中
                window.sessionStorage.setItem('token',token)

                // 将token值保存到cookieStore中
                // window.cookieStore.set('token',token)

                //正确跳转首页面
                this.$router.push({name:'index'})
            }
        },

        //axios发送post请求,传递form表单
        async submitLogin(){
            const params=qs.stringify(this.loginForm)
            const response = await axios.post("http://.4..1xx8:18899/login/",params)
            console.log("response:",response)
            if(response.status===200){
                this.$message({
                    type:'success',
                    message:'登录成功!'
                })
                this.$router.push({name:'index'})
               
            }
        },


        //如何发送http请求,传递json参数 (任选其一)
        // ------------------------------------------------方法一----------------------------------------------
        // (该方法是成功时的,失败时后面介绍处理):
        async submitLogin1(){
            const params={
                username:this.loginForm.username,
                password:this.loginForm.password
            }
            const response = await axios.post("http://xxx.4.xx07.xxx8:18899/login/",params)
            console.log("response:",response)
            if(response.status===200){
                this.$message({
                    type:'success',
                    message:'登录成功!'
                })
                this.$router.push({name:'index'})
                // 获取到token值
                const token = response.data.token

                // 下面三种保存token值位置方式(任选其一即可,亦可都保存)
                // 将token值保存到localStorage中
                // window.localStorage.setItem('token',token)

                // 将token值保存到sessionStorage中
                window.sessionStorage.setItem('token',token)

                // 将token值保存到cookieStore中
                window.cookieStore.set('token',token)
            }
           
            /*
     ====【扩展】===
   三者的区别:
            localStorage:本地持久性保存,除非手动删除
            sessionStorage:会话存储,浏览器关闭后删除
            cookieStore:持久化存储,前后端分离的会存储cookie,但是获取不便
                                 前后端不分离时,都会自带cookie
            */
           
        },

        // --------------------------------------方法二-----------------------------------
        submitLogin2(){
            console.log('点击了登录',this.loginForm);
            const params ={
                username:this.loginForm.username,
                password:this.loginForm.password
            }
            // 发送post请求
            const res = axios.post("http://xxx.4.xxx.1xxx8:18899/login/",params)
            console.log("res:",res)

            // 设置回调函数,接收返回的响应对象
            // 异步操作成功时 执行的回调函数
            res.then(response =>{
                console.log("请求成功");
                console.log("response",response);
            })

            // 异步回调失败时执行的回调函数
            res.catch(error =>{
                console.log("请求失败");
                console.log("response:",error.response);
            })
        }
}
</script>

 

 

 

--end--

 

热门相关:仙城纪   时间都知道   天启预报   网游之逆天飞扬   仗剑高歌