当前位置: 首页 > news >正文

哪个在家做兼职网站比较好系统网站建设公司

哪个在家做兼职网站比较好,系统网站建设公司,介绍类网站建设策划书范文,南屏网站建设odoo 17 后端路由接口认证自定义 在接口中, 我们都知道有3中常用的认证方式 user 用户级认证public 访问时赋予公共用户none 不做任何用户级处理 一般不做数据库重要数据校验, 仅做访问处理 以上是源码提供的三种方式 接下来我们自定义一个认证方式 首先找到的这认证是在…

odoo 17 后端路由接口认证自定义

在接口中, 我们都知道有3中常用的认证方式

  • user 用户级认证
  • public 访问时赋予公共用户
  • none 不做任何用户级处理 一般不做数据库重要数据校验, 仅做访问处理

以上是源码提供的三种方式

接下来我们自定义一个认证方式

首先找到的这认证是在 ir.http 模型内完成的, 认真源码如下

@classmethod
def _authenticate(cls, endpoint):auth = 'none' if http.is_cors_preflight(request, endpoint) else endpoint.routing['auth']try:if request.session.uid is not None:if not security.check_session(request.session, request.env):request.session.logout(keep_db=True)request.env = api.Environment(request.env.cr, None, request.session.context)getattr(cls, f'_auth_method_{auth}')()except (AccessDenied, http.SessionExpiredException, werkzeug.exceptions.HTTPException):raiseexcept Exception:_logger.info("Exception during request Authentication.", exc_info=True)raise AccessDenied()

源码中可以看到 getattr(cls, f'_auth_method_{auth}')() 这里匹配并执行, 很明显可以看到调用了这个类的方法 _auth_method_user, _auth_method_public, _auth_method_none 往后继续操作

@classmethod
def _get_public_users(cls):return [request.env['ir.model.data']._xmlid_to_res_model_res_id('base.public_user')[1]]@classmethod
def _auth_method_user(cls):if request.env.uid in [None] + cls._get_public_users():raise http.SessionExpiredException("Session expired")@classmethod
def _auth_method_none(cls):request.env = api.Environment(request.env.cr, None, request.env.context)

这时候我们只需继承 ir.http 模型进行操作, 下面是例子

from odoo import models
from odoo.http import requestclass IrHttp(models.AbstractModel):_inherit = 'ir.http'@classmethoddef _auth_method_wechat(cls):user = request.env.ref('xxx.user_wxapp_user_manager')  # 给后端用户作为认证request.uid = user.idrequest.user = user

这里以通过添加微信认证wechat为例, 将模块安装后,系统会增加一个微信认证功能, 更多操作请在方法中编写逻辑

main.py 文件

普通接口访问如下

@http.route('/demo/auth/reload', type='http', auth='user', methods=['GET'], cors='*', csrf=False)
def auth_reload(self):"""认证接口, 需要通过用户级认证"""return Response(json.dumps({}), status=200, content_type='application/json')

自定义认证访问, 只需修改 auth='wechat' 即可

@http.route('/demo/auth/reload', type='http', auth='wechat', methods=['GET'], cors='*', csrf=False)
def auth_reload(self):"""自定义认证接口, 通过 _auth_method_wechat 方法处理用户需求"""return Response(json.dumps({}), status=200, content_type='application/json')

最后是模块的目录结构

└─demo│  __init__.py│  __manifest__.py│├─controllers│      main.py│      __init__.py│├─models│      ir_http.py│      __init__.py

注意, 别忘了将 controllers 和 models 导出到包外

http://www.yayakq.cn/news/52228/

相关文章:

  • 网站域名续费seo搜索引擎优化平台
  • 建设网站是要先建站在备案么中国建筑业协会
  • 企业官网怎么和别的网站做链接深圳注册公司代理
  • cms做网站不用后端广州模板建站平台
  • 手机英语网站射洪网站建设工作室
  • 章贡区网站建设北京软件开发公司官网
  • 网站数据库网络错误中山做网站好的公司
  • 深圳手机网站建设联系电话dede自定义网站地图
  • 艺术品展览公司网站建设达州建设机械网站
  • 响应式网站建设品牌全网天下网站上传wordpress
  • 个人响应式网站设计建立网站需要什么软件
  • 网站建设风险管理微信h5页面是什么
  • 百度官方下载企业网站seo优化怎么做
  • 免费商务网绍兴网站关键词优化
  • 华泰保险公司官方网站基于iview的网站开发模板
  • 大连哪里有手机自适应网站建设云服务器网站搭建教程
  • 微网站开发服务架设网站 软件
  • 食品销售公司网站制作最好的微网站建设公司推荐
  • 三星官网网站网页界面设计中一般使用的分辨率的显示密度是多少dpi
  • 广州网站 服务器建设wordpress网站收录插件
  • 网站推广优化排名seo怎么更改网站里的tdk
  • 山东枣庄滕州网站建设公司网站的建设怎么做
  • 用wex5可以做网站吗做旅游网站毕业设计
  • flash网站制作下载有需要网站建设的没
  • 做时时的网站小学四年级摘抄新闻
  • 阿里云怎么创建网站网站手机版怎么做的
  • 动漫网站logo定制网络设备的后期维护缺点
  • 成都做网站wordpress 白屏
  • 企业网站建设的平台怎么用wordpress做企业网站
  • 建站技术服务四川省建设人才网官网