odoo16-API(Controller)带有验证访问的接口

odoo16-API(Controller)带有验证访问的接口

目前我使用odoo原生的登录token来验证登陆的有效性

废话不多说直接上代码

# 测试获取session_id
import requests
class GetOdooData(http.Controller):
    def getOdooToken(self):
        # http://localhost:8123访问odoo的路径,后面的web/session/authenticate固定写法请不要动!!!
        url = "http://localhost:8069/web/session/authenticate"
        # 传入需要访问的数据库名称,登录账号与密码
        data = {
            "params": {
                "db": "devodoo16.0",
                "login": "odoo",
                "password": "odoo",
            }
        }
        headers = {'Content-type': 'application/json'}
        response = requests.post(url, headers=headers, json=data)
        # 从服务器返回的响应信息中获取名为"session_id"的cookie的值,并将其返回。
        return response.cookies["session_id"]

    @http.route('/test', type='json', auth="none", cors="*", csrf=False)
    def test(self, **kw):
        odootoken = self.getOdooToken()
        return odootoken
        # 用此代码进行接口测试,查看前端是否拿到了session_id

我这是把数据库+用户+密码直接写死用来测试的,你也可以把用户+密码改为前端传参数形式这里就不阐述了···想要的话私信发你

修改接口验证auth=user 的

代码如下

    @http.route('/getdata', type='json', auth="user", cors="*", csrf=False)
    def getdata(self, **kw):
        # dingdan_h = 4900145711
        dingdan_h = kw.get('dingdan_h')
        print("dingdan_h==",dingdan_h)
        dingdan = request.env['dc.kaishik.dd'].sudo().search([('dingdan_h', '=', dingdan_h)])#随便找个模型查询一条数据

        if not dingdan:
            back_data = {'code': 300, 'msg': '订单不存在'}
            return (back_data)
        data = {
            "dingdan_h": dingdan.dingdan_h,
            "dingdan_lx": dingdan.dingdan_lx,
            "jiaohuo_date": dingdan.jiaohuo_date,
        }
        back_data = {'code': 100, 'msg': '查询订单成功', 'data': data}
        print("back_data==",back_data)
        return (back_data)

重启刷新,访问getdata接口,并且在前端的(Headers)头部写入key:X-Openerp-Session-Id;value填入刚刚拿到的cookie

就可以拿到数据

如果在前端的(Headers)头部 不填写 key:X-Openerp-Session-Id 那么返回就为如下

以上   溜了  ~~~   Bye ~ 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值