首页 > 试题广场 >

说一下token 能放在cookie中吗?

[问答题]
说一下token 能放在cookie中吗?
不能。token本身就是用来鉴权的,防止CSRF攻击。如果将token放在cookie中,则token还是会随cookie自动携带至请求中,防止不了CSRF攻击。token一般存储在sessionStorage/localStorage里面。token的出现就是为了解决用户登录后的鉴权问题,如果采用cookie+session的鉴权方式,则无法有效地防止CSRF攻击,同时,如果服务端采用负载均衡策略进行分布式架构,session也会存在一致性问题,需要额外的开销维护session一致性。所以token是专门为了鉴权而生,常见的token为JWT(JSON Web Token),用户通过账户密码登入系统后,服务端会生成一个jwt。jwt一般包含三个部分header、payload和signature,header包括两个字段说明token的类型和采用的签名算法,payload包含用户的一些身份权限信息但不包含敏感信息,signature是服务端的签名由前两个部分采用base64编码后再经过签名算法加密生成,签名算法的私钥由服务器保管。服务端生成jwt后返回给客户端。客户端下次调用api的请求头中放入token用于鉴权,服务端会通过jwt的前两个部分和私钥经过签名算法生成一个签名,判断与jwt第三部分的签名是否一致,如果一致就认证通过。
编辑于 2022-08-18 10:46:28 回复(6)
可以,但最好不要放cookie里,容易产生csrf问题
发表于 2022-07-09 06:27:59 回复(0)
1.实现上是可以的,功能上不推荐,容易产生csrf问题
2.token一般存储在sessionStorage/localStorage里面。token的出现就是为了解决用户登录后的鉴权问题,如果采用cookie+session的鉴权方式,则无法有效地防止CSRF攻击,同时,如果服务端采用负载均衡策略进行分布式架构,session也会存在一致性问题,需要额外的开销维护session一致性。
发表于 2023-01-31 10:09:10 回复(0)
可以, 1. 客户端使用用户名跟密码请求登录 2. 服务端收到请求,去验证用户名与密码 3. 验证成功后,服务端签发一个 token ,并把它发送给客户端 4. 客户端接收 token 以后会把它存储起来,比如放在 cookie 里或者 localStorage 里 5. 客户端每次发送请求时都需要带着服务端签发的 token(把 token 放到 HTTP 的 Header 里) 6. 服务端收到请求后,需要验证请求里带有的 token ,如验证成功则返回对应的数据
发表于 2022-05-18 00:37:54 回复(0)
可以,token的出现是用来鉴权的,在请求将用户的账号和密码发送给服务器,服务器鉴定账号密码匹配就返回token,客户端接口道token后将它存放在cookie和localstorage中,之后的每次请求都携带cookie中的token;token是否过期是由后端判断的而不是由前端判断的,因此cookie不要给token设置过期时间。
发表于 2024-04-29 14:19:51 回复(0)
可以 1. 客户端使用用户名跟密码请求登录 2. 服务端收到请求,去验证用户名与密码 3. 验证成功后,服务端签发一个 token ,并把它发送给客户端 4. 客户端接收 token 以后会把它存储起来,比如放在 cookie 里或者 localStorage 里 5. 客户端每次发送请求时都需要带着服务端签发的 token(把 token 放到 HTTP 的 Header 里) 6. 服务端收到请求后,需要验证请求里带有的 token ,如验证成功则返回对应的数据 收起解题思路
发表于 2023-02-24 08:32:44 回复(0)
可以,token是用来判断用户是否登录的,客户端输入用户名和密码,服务器收到请求,去验证用户名和密码,验证成功后,服务端签发一个token发送给客户端,客户端可以把它保存在cookie和localStorage应用下次验证登录,在cookie里面只要不设置时间就ok
编辑于 2022-11-01 11:54:55 回复(0)
可以
发表于 2022-05-23 11:01:57 回复(0)
不能。他是用来防止CSRF攻击的,一般存在ls以及ss。token的出现就是为了解决用户登录后的鉴权问题,如果采用cookie+session的鉴权方式,则无法有效地防止CSRF攻击,同时,如果服务端采用负载均衡策略进行分布式架构,session也会存在一致性问题,需要额外的开销维护session一致性。所以token是专门为了鉴权而生,常见的token为JWT(JSON Web Token),用户通过账户密码登入系统后,服务端会生成一个jwt。jwt一般包含三个部分header、payload和signature,header包括两个字段说明token的类型和采用的签名算法,payload包含用户的一些身份权限信息但不包含敏感信息,signature是服务端的签名由前两个部分采用base64编码后再经过签名算法加密生成,签名算法的私钥由服务器保管。服务端生成jwt后返回给客户端。客户端下次调用api的请求头中放入token用于鉴权,服务端会通过jwt的前两个部分和私钥经过签名算法生成一个签名,判断与jwt第三部分的签名是否一致,如果一致就认证通过。
发表于 2024-05-12 23:46:36 回复(0)
能,但不推荐
编辑于 2023-12-26 11:57:09 回复(0)
可以,cookie不设置时间就行,但是不推荐,因为无法防范CSRF攻击,并且token本来就有用于防止CSRF攻击的目的 1.客户端使用用户名和密码登录 2.服务端收到请求,验证用户名和密码 3.验证成功后,服务端签发一个token,并发送给客户端 4.客户端接受token后,存储到cookie或者localStorage中 5.客户端发起请求时,请求头需要携带token 6.服务端收到请求后,验证token,验证成功则返回数据
发表于 2023-10-09 17:20:20 回复(0)
可以 1.客户端使用用户名和密码请求登录 2.服务端收到请求去验证用户名和密码 3.验证成功后,服务端签发一个token,并把它发送给客户端 4.客户端接收token以后会把它存储起来,比如放在cookie里或localStorage里 5.客户端每次发送请求时都需要带着服务端签发的token(把token放到HTTP的Header里) 6.服务端收到请求后,需要验证请求里带有的token,如验证成功则返回对应的数据
发表于 2023-09-04 20:34:44 回复(0)
token一般是用来判断用户是否登录的,它内部包含的信息有:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,token 的前几位以哈希算法压缩成的一定长度的十六进制字符串) `token`可以存放在`Cookie`中,`token` 是否过期,应该由后端来判断,不该前端来判断,所以`token`存储在`cookie`中只要不设置`cookie`的过期时间就ok了,如果 `token` 失效,就让后端在接口中返回固定的状态表示`token` 失效,需要重新登录,再重新登录的时候,重新设置 `cookie` 中的 `token` 就行 token认证流程 1. 客户端使用用户名跟密码请求登录 2. 服务端收到请求,去验证用户名与密码 3. 验证成功后,服务端签发一个 token ,并把它发送给客户端 4. 客户端接收 token 以后会把它存储起来,比如放在 cookie 里或者 localStorage 里 5. 客户端每次发送请求时都需要带着服务端签发的 token(把 token 放到 HTTP 的 Header 里) 6. 服务端收到请求后,需要验证请求里带有的 token ,如验证成功则返回对应的数据
发表于 2023-08-22 09:14:14 回复(0)
发表于 2023-08-09 11:23:02 回复(0)
能,token放在cookie中,每次发送请求时把token放到header中,由服务器进行判断token是否有效。不设置cookie的过期时间,如果token失效,则返回相应状态码表示,需要重新登录,再重新登录时重新设置cookie中的token。
发表于 2023-07-01 17:00:21 回复(0)
axios拦截器分为响应和请求拦截器,请求拦截器 在请求发送前进行必要操作处理,例如添加统一cookie、请求体加验证、设置请求头等,相当于是对每个接口里相同操作的一个封装; 响应拦截器 同理,响应拦截器也是如此功能,只是在请求得到响应之后,对响应体的一些处理,通常是数据统一处理等,也常来判断登录失效等。
编辑于 2023-03-23 23:51:37 回复(0)
可以,1、客户端使用用户名和密码请求登录。2、服务器收到请求,去验证用户名和密码。3、验证成功后,发送token。4、客户端接收到token,可以用cookie或者localStorage存储。5,每次请求时再请求头里面带上token。6、服务端收到请求后,验证token,如果验证成功后,返回对应数据。
发表于 2023-03-15 12:31:53 回复(0)
token可以放在cookie中,token是用于判断用户是否登录,主要由uid(判断唯一标识),time(当前时间的时间戳),sign(是token前几位以哈希算法来的十六进制的一段字符串)组成。token可以存放在cookie中,token是否过期应该由后端来判断,而不是前端判断,因此只需要前端不设置存放token的cookie的过期时间就可以了。当token过期的时候,后端会返回一个固定的状态:token过期,请重新登录的状态,然后重新登录后,只需要修改cookie中的token。token认证流程:1、客户端输入用户名和密码的时候,向后端发送请求;2、服务器端收到请求,如果验证通过,会签发一个token并返回给客户端;3、客户端收到token,会存储在cookie中或者localstorage中;4、每次发送请求头的时候,都会把token放到请求头中一起发送给后端5、服务端收到请求后,验证token,通过之后会返回相应的数据。
发表于 2023-02-21 11:13:13 回复(0)
【1、URL解析】:判断浏览器输入的是搜索内容还是URL
【2、查找缓存】:如果能找到缓存则直接返回页面,如果没有缓存则需要发送网络请求页面
【3、DNS域名解析】:将域名转换为IP地址的过程,得到了服务器具体的IP地址,才可以进行TCP链接以及数据的传输。
【4、三次握手建立TCP连接】:
- 第一次握手:客户端主动链接服务器,发送初始序列号seq=x与SYN=1同步请求标志,并进入同步已发送SYN_SENT状态,等待服务器确认。
- 第二次握手:服务端收到消息后发送确认标志ACK=1与同步请求标志SYN=1,发送自己的序列号seq=y以及客户端确认序号ack=x+1,此时服务器进入同步收到SYN_RECV状态。
- 第三次握手:客户端收到消息后发送确认标志ACK=1,发送自己的序列号seq=x+1与服务器确认号ack=y+1,发送过后即确认链接已建立状态ESTABLISHED,服务端接收确认信息后进入链接已建立状态ESTABLISHED。
【5、发起HTTP请求】:浏览器构建HTTP请求报文,并通过TCP协议传送到服务器的指定端口,HTTP请求报文一共有三个部分
- 报文首部,通常包含请求行与各种请求头字段等;
- 空行,告诉服务器请求头部到此为止
- 报文主体,即发送的数据信息,通常并不一定要有报文主体。
【6、服务器响应并返回结果】:服务端响应HTTP请求,返回响应报文,HTTP响应报文由四部分组成:响应行、响应头、空行、响应体。
【7、通过四次握手释放TCP连接】
【8、浏览器渲染】
【9、js引擎解析】
编辑于 2023-01-08 13:00:35 回复(0)
token能存放在cookie中,token其实就是访问资源凭证。一般用户通过用户名和密码登录成功后,服务器将登录凭证做数字签名,加密之后得到的字符串。 将token存放在cookie中可以指定httponly,来防止被javascript读取,也可以通过指定的secure来保证token只在https下传输。缺点是不符合restful最佳实践,容易受到CSRF攻击。
发表于 2022-12-26 10:46:31 回复(0)