指尖上的记忆指尖上的记忆
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub

nuxt3获取接口传递过来的cookie信息,封装到utils/utils.js内容如下:

import {useCookie} from "#imports";
import _ from "lodash"

export default {
    isLogin: function () {
        let cookie = useCookie('userInfo')
        return _.has(cookie.value, 'id');
    },
    getUserInfo: function () {
        let cookies = useCookie('userInfo')
        let userInfo = {}
        if (_.has(cookies.value, 'id')) {
            userInfo.id = cookies.value.id
            userInfo.email = cookies.value.email
            userInfo.firstName = cookies.value.firstName
            userInfo.lastName = cookies.value.lastName
            userInfo.image = cookies.value.image
            userInfo.isAdmin = cookies.value.isAdmin
            userInfo = cookies._rawValue
            
            //userInfo = cookies._rawValue 也可以直接这样整个赋值,不用像上面一样一个一个赋值
        }

        return userInfo;
    },
    deleteUserInfo: function (){
        let cookies = useCookie('userInfo')
        cookies.value = null
    }
}

接口基于symfony5开发,代码如下:

public function onAuthenticationSuccess(Request $request, TokenInterface $token): RedirectResponse|Response
    {
        /** @var User $user */
        $user = $token->getUser();
        $userInfo = [];
        if ($user) {
            $userInfo['id'] = $user->getId();
            $userInfo['email'] = $user->getEmail();
            $userInfo['firstName'] = $user->getFirstName();
            $userInfo['lastName'] = $user->getLastName();
            $userInfo['isAdmin'] = count($user->getRoles()) > 1 ? 1 : 0;
            $userInfo['image'] = $user->getImage();
            $userInfo['avatar'] = $user->getAvatar();
        }

	    //注意expire 是个时间戳,这里设置过期时间
        $response = $this->httpUtils->createRedirectResponse($request, $this->determineTargetUrl($request));
        $cookie = new Cookie('userInfo', json_encode($userInfo), 1677812596, '/', null, null, false);
        $response->headers->setCookie($cookie);

        return $response;
    }

设置了cookie过期时间的话,当cookie过期的时候 会自动删除,cookie自动删除主要有如下几种场景:

①会话 cooke (Session cookie) 在会话结束时(浏览器关闭)会被删除
②持久化 cookie(Persistent cookie)在到达失效日期时会被删除
③如果浏览器中的 cookie 数量达到限制,那么 cookie 会被删除以为新建的 cookie 创建空间。