免登录

This commit is contained in:
pengyuthon
2026-02-23 12:05:53 +08:00
parent 4049b1e647
commit 2a89fb72d5
2 changed files with 7 additions and 22 deletions
+6 -21
View File
@@ -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,
+1 -1
View File
@@ -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