Js如何使用cookie

 

文章转载于:   Js操作cookie   http://www.studyofnet.com/news/3.html

 

cookie 最终都是以文件形式存放在客户端计算机中,所以查看和修改 cookie 都是很方便的,这就是为什么常说 cookie 不能存放重要信息的原因。

 

每个 cookie 的格式都是这样的:<cookie名>=<值>;名称和值都必须是合法的标示符。

 

cookie 是存在 有效期的。在默认情况下,一个 cookie 的生命周期就是在浏览器关闭的时候结束。如果想要 cookie 能在浏览器关掉之后还可以使用,就必须要为该 cookie 设置有效期,也就是 cookie 的失效日期。

 

cookie的存储

 

//参数说明:
//CKname是cookie名称(必填),
//CKvalue是cookie值(必填),
//duration是过期时间(默认为关闭浏览器),
//CKpath是可访问cookie的目录(默认为所有页面),
//CKdomain是可访问cookie的主机名(默认为当前域名下[子域名]);
function setCookie(CKname,CKvalue,duration,CKpath,CKdomain)
{
 var NewDate = new Date();
 NewDate.setTime(NewDate.getTime()+duration*24*60*60*1000);
 document.cookie = CKname+"="+escape(CKvalue)+(duration?";expires="+NewDate.toGMTString():"")+(CKpath?";path="+CKpath:"")+(CKdomain?";domain="+CKdomain:"");
}; 
 

 

cookie的读取


//参数:
//CKname:Cooke名称
function getcookie(CKname)
{
 var arrCookie = document.cookie.match(new RegExp("(^| )"+CKname+"=([^;]*)(;|$)"));
 if(arrCookie!=null)
 {
 return unescape(arrCookie[2]);
 }
 else
 {
 return null;
 };
}; 
 

 


 cookie的删除

 

//删除指定名称的cookie
function deleteCookie(CKname)
{
 document.cookie = CKname+"=;expires="+(new Date(0)).toGMTString();
}; 
 

 

NestJS是一个基于TypeScript的开源Web框架,它在Express之上构建,提供了丰富的功能和模块化设计。如果你想要在NestJS应用中使用cookies进行用户身份验证或存储数据,你可以遵循这些步骤: 1. **安装依赖**: 首先,确保已经安装了`@nestjs/authentication`和`@nestjs/http`模块,它们包含了处理HTTP请求和身份验证的功能。如果还没有安装,可以通过`npm install @nestjs/authentication @nestjs/http`命令添加。 2. **创建服务**: 在`app.module.ts`或相关的模块中,引入`AuthGuard`或自定义的认证策略,并使用`useGlobalGuards`注册它: ```typescript import { Module, GlobalGuard } from '@nestjs/common'; import { AuthGuard } from '@nestjs/passport'; @Module({ providers: [AuthGuard], // ... }) export class AppModule implements GlobalGuard { canActivate(context: ExecutionContext) { // 自定义登录检查逻辑 return true; } } ``` 3. **设置cookie**: 在认证成功后,使用`Response`对象的`setCookie`方法来设置cookie: ```typescript import { Injectable, CanActivate, HttpStatus, HttpResponse } from '@nestjs/common'; import * as cookieParser from 'cookie-parser'; import * as jwt from 'jsonwebtoken'; @Injectable() export class JwtAuthGuard extends AuthGuard('jwt') { canActivate(context: ExecutionContext): boolean { // ...其他认证逻辑 const user = this.getUserFromToken(); // 获取用户信息 if (!user) { return false; } // 设置cookie const token = jwt.sign({ userId: user.id }, 'your-secret-key', { expiresIn: '1h' }); const response = context.switchToHttp().getResponse<HttpResponse>(); response.setCookie('jwt', token, { httpOnly: true, maxAge: 60 * 60 * 1000 }); return true; } } ``` 这里设置了名为`jwt`的cookie,值为JWT令牌,通常`httpOnly`属性会确保cookie不被JavaScript脚本访问,`maxAge`则设置了cookie的有效时间。 4. **验证cookie**: 在每个需要保护的路由或控制器前,使用`@UseGuards(JwtAuthGuard)`装饰器,NestJS会自动在每次请求头中查找`jwt` cookie并解码验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值