【无标题】前后端分离的项目,后端系统拿不到cookie

问题描述

前后端分离的系统中,后端服务拿不到cookie

一个前后端分离的项目,在前端页面中实现记住密码功能(下次访问登录页面,用户名密码等信息自动回显)。下面是前端系统Login.vue中的核心代码。

<script setup>
import {ref} from "vue"
import requestUtil from '@/util/request'
import store from '@/store'
import qs from 'qs'
import {ElMessage} from 'element-plus'
import router from "@/router"
import Cookies from "js-cookie"
import {encrypt, decrypt} from "@/util/jsencrypt"

const loginRef = ref(null);
const loginForm = ref({
    username: "",
    password: "",
    rememberMe: false
})
const loginRules = {
    username: [{required: true, trigger: "blur", message: "请输入您的账号"}],
    password: [{required: true, trigger: "blur", message: "请输入您的密码"}]
};
const handleLogin = () => {
    loginRef.value.validate(async (valid) => {
        if (valid) {
            // 勾选了需要记住密码设置在 cookie 中设置记住用户名和密码
            if (loginForm.value.rememberMe) {
                Cookies.set("username", loginForm.value.username, {expires: 30});
                Cookies.set("password", encrypt(loginForm.value.password), {expires: 30});
                Cookies.set("rememberMe", loginForm.value.rememberMe, {expires: 30});
            } else {
                // 否则移除
                Cookies.remove("username");
                Cookies.remove("password");
                Cookies.remove("rememberMe");
            }
            try {
                let result = await
                    requestUtil.post("login?" + qs.stringify(loginForm.value))
                let data = result.data;
                if (data.code === 200) {
                    const token = data.authorization;
                    store.commit('SET_TOKEN', token);
                    router.replace("/")
                } else {
                    ElMessage.error(data.msg)
                }
            } catch (error) {
                console.log("error:" + error);
                ElMessage.error("服务器出错,请联系管理员!")
            }
        } else {
            console.log("验证失败")
        }
    })
}

function getCookie() {
    const username = Cookies.get("username");
    const password = Cookies.get("password");
    const rememberMe = Cookies.get("rememberMe");
    loginForm.value = {
        username: username === undefined ? loginForm.value.username : username,
        password: password === undefined ? loginForm.value.password :
            decrypt(password),
        rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
    };
}

getCookie();
</script>

接下来我在后端服务中发现拿不到cookie,疑问?


原因分析:

前端端口是8080,后端端口是80
cookie是有的,但是浏览器存的是和前端系统8080连接的cookie,这里思维陷入到传统的前后端不分离当中(后端Java代码和前端页面不分离,单体系统,单个端口部署)。下面是浏览器与前端系统8080的cookie。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值