接口开发 - cookie

json_res = json.dumps(res,ensure_ascii_False) ---------字典转成 json,,res为返回的结果

res = flask.make_response(json_res)---------构造成返回结果的对象

res.set_cookie(username,session_id,600) ---------600为设置cookie 的失效时间;set_cookie 设置为cookie(cookie 为本地存储的 session)

运行后可以在web 中查看 cookie 值
F12 开发者工具 -> Application -> Cookies -> 查看对应的name 和 value(name:username;vales:session_id)

 

### 下个请求调用 cookie ####

@server.route('/posts')
def posts():
  print(flask.request.cookies) ---------- 使用 flask.request.cookies 调用web 中存储的 cookie 值
  return '111' ------ 必须有返回值,否则调用会报错

 

例:

import flask,time,json
from lib import tools
server = flask.Flask(__name__)

@server.route('/login',methods=['get'])
def login():
  username = flask.request.values.get('username')
  pwd = flask.request.values.get('pwd')
  if username == 'nhy' and pwd=='123456':
    session_id = tools.my_md5(username+time.strftime('%Y%m%d%H%M%S'))
    key = 'txz_session:%s'%username
    tools.op_redis(key,session_id,600)
    res = {'session_id':session_id,'error_code':0,'msg':'登录成功',
      'login_time':time.strftime('%Y%m%d%H%M%S') } #给用户返回的信息
  json_res = json.dumps(res,ensure_ascii=False) #返回结果弄成json
  res = flask.make_response(json_res) #构造成返回结果的对象
  res.set_cookie(key,session_id,3600) #最后的数字是cookie的失效时间。
  return res

@server.route('/posts')
def posts():
  cookies = flask.request.cookies #所有的cokies
  username = '' #
  session = ''#定义这两个变量是为了,在没有传cookie的时候用的。
  for key,value in cookies.items():
    if key.startswith('txz_session'): #判断cookie以txz_session开头的话,取到它
      username = key
      session = value #调用接口的时候用户传过的seesion,从cookie里面取过来的
  redis_session = tools.op_redis(username) #从redis里面获取到的的cookie
  if redis_session == session: #判断传过来的seeion和redis里面的session一样
    title = flask.request.values.get('title') #获取文章标题
    conent = flask.request.values.get('content') #获取文章内容
    article_key ='article:%s'%title #key都以article开头
    tools.op_redis(article_key,conent) #把文章写入redis
    res = {'msg':'文章发表成功!','code':0}
  else:
    res = {'msg':'用户未登录!','code':2009}

  return json.dumps(res,ensure_ascii=False)

转载于:https://www.cnblogs.com/lynn-chen/p/9036023.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java后端开发中,Cookie是一种小的数据存储机制,常用于保持用户的会话状态。当你需要通过API接口发送用户身份验证信息时,可以考虑使用Cookie。以下是创建一个处理Cookie接口的基本步骤: 1. **创建Cookie对象**: 使用`javax.servlet.http.Cookie`类创建一个新的Cookie,设置名称、值、过期日期、路径等属性。 ```java Cookie cookie = new Cookie("username", "JohnDoe"); cookie.setMaxAge(3600); // 1小时有效期 cookie.setPath("/"); ``` 2. **响应中添加Cookie**: 在HTTP响应的`ServletResponse`对象上,使用`addCookie()`方法添加Cookie到响应头。 ```java HttpServletResponse response = ...; response.addCookie(cookie); ``` 3. **从请求获取Cookie**: 在接收HTTP请求时,可以从`HttpServletRequest`对象的`cookies`集合中获取Cookie。 ```java Cookie[] cookies = request.getCookies(); if (cookies != null) { for (Cookie c : cookies) { String username = c.getValue(); // 用户名 // 根据username做进一步处理 } } ``` 4. **处理安全性和跨域问题**: 要注意防止XSS攻击,避免将敏感信息直接存入Cookie。同时,在前端处理跨域访问时,服务器可能需要配置允许特定来源访问Cookie。 5. **示例接口**: 创建一个简单的GET接口,可以处理Cookie返回相应的数据。 ```java @GetMapping("/api") public ResponseEntity<String> handleCookie(@RequestParam(value = "username", required = false) String username, HttpServletResponse response) { if (username == null) { username = getCookieUsername(response); } // 根据username返回响应数据 return ResponseEntity.ok("Hello, " + username); } private String getCookieUsername(HttpServletResponse response) { // 从request获取并解析Cookie } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值