From 2a89fb72d5bd645ef66cff3836b31c682a08b241 Mon Sep 17 00:00:00 2001 From: pengyuthon Date: Mon, 23 Feb 2026 12:05:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=8D=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_wechat/controllers/main.py | 27 ++++++--------------------- yuthon_wechat/models/res_users.py | 2 +- 2 files changed, 7 insertions(+), 22 deletions(-) diff --git a/yuthon_wechat/controllers/main.py b/yuthon_wechat/controllers/main.py index 41dce8317..37fe52d87 100644 --- a/yuthon_wechat/controllers/main.py +++ b/yuthon_wechat/controllers/main.py @@ -40,11 +40,11 @@ class Home(http.Controller): """ provider = request.env.ref('yuthon_wechat.wechat_corp_web_auth_oauth_provider') (db, login, oauth_code) = request.env['res.users'].sudo().auth_oauth_wechat(provider.sudo(), {'code': code}) - + # 如果没有state参数,返回原始值,保持与原本方法行为一致 if not state: return (db, login, oauth_code) - + # 如果有state参数,执行登录并重定向到目标URL try: # 查找用户并创建session @@ -52,7 +52,7 @@ class Home(http.Controller): if not user: _logger.error(f"OAuth登录后未找到用户: {login}") return http.request.redirect('/web/login?error=user_not_found', 302) - + # 创建session dbname = request.env.cr.dbname try: @@ -63,9 +63,9 @@ class Home(http.Controller): request.session.login = user.login request.session.db = dbname uid = user.id - + _logger.info(f"企业微信OAuth登录成功: 用户 {user.login} (ID: {user.id})") - + # 解码并重定向到目标URL try: from urllib.parse import unquote @@ -79,7 +79,7 @@ class Home(http.Controller): except Exception as e: _logger.error(f"解析state参数失败: {str(e)}") return http.request.redirect('/web', 302) - + except AccessDenied as e: _logger.error(f"企业微信OAuth登录失败: {str(e)}") return http.request.redirect('/web/login?error=access_denied', 302) @@ -172,8 +172,6 @@ class Home(http.Controller): @http.route('/phone/wechat/login', type='http', auth="none", csrf=False, cors='*', methods=['POST']) def phone_wechat_login(self, **kw): """手机端企业微信OAuth登录接口""" - # 阻止此请求修改已有的 session,避免挤掉 PC 端同用户的登录状态 - request.session.should_save = False try: code = kw.get('code') if not code: @@ -211,16 +209,6 @@ class Home(http.Controller): }), headers=[('Content-Type', 'application/json')] ) - except WeChatOAuthException as e: - _logger.error(e) - return request.make_response( - json.dumps({ - 'code': e.errcode, - 'message': f'企业微信认证失败: {str(e.errmsg)}', - 'data': None - }), - headers=[('Content-Type', 'application/json')] - ) except Exception as e: _logger.error(f"企业微信OAuth认证异常: {str(e)}", exc_info=True) return request.make_response( @@ -331,8 +319,6 @@ class Home(http.Controller): status=302, headers=[('Location', redirect_url)] ) - # 阻止 Odoo 覆盖现有 session cookie,避免后台 session 过期 - request.session.should_save = False return response @@ -341,7 +327,6 @@ class Home(http.Controller): frontend_base_url = 'https://phone.thtzjt.com' redirect_url = f"{frontend_base_url}/phone/Login" - request.session.should_save = False return WerkzeugResponse( '', status=302, diff --git a/yuthon_wechat/models/res_users.py b/yuthon_wechat/models/res_users.py index ae2898753..905a068c7 100644 --- a/yuthon_wechat/models/res_users.py +++ b/yuthon_wechat/models/res_users.py @@ -10,7 +10,7 @@ from odoo import api, fields, models from odoo.tools.misc import ustr from odoo.exceptions import AccessDenied from odoo.http import request -# from odoo.addons.auth_signup.models.res_users import SignupError +from odoo.addons.auth_signup.models.res_users import SignupError from odoo.addons.auth_oauth.controllers.main import OAuthLogin import logging