Отключить или обойти логин odoo при попытке попасть из внешнего приложения - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь открыть URL-адрес odoo из моего размещенного приложения, но его перенаправление на экран входа в систему.Поскольку пользователь уже вошел в мое приложение, логически пользователя не следует перенаправлять на экран входа снова ... Как я могу обойти эту проверку безопасности odoo ???

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Можно обойти безопасность odoo.Эти изменения необходимы в этих двух файлах `

**server/odoo/http.py**
line number 406 in odoo 12
 def validate_csrf(self, csrf):
        # if not csrf:
        #     return False
        #
        # try:
        #     hm, _, max_ts = str(csrf).rpartition('o')
        # except UnicodeEncodeError:
        #     return False
        #
        # if max_ts:
        #     try:
        #         if int(max_ts) < int(time.time()):
        #             return False
        #     except ValueError:
        #         return False
        #
        # token = self.session.sid
        #
        # msg = '%s%s' % (token, max_ts)
        # secret = self.env['ir.config_parameter'].sudo().get_param('database.secret')
        # assert secret, "CSRF protection requires a configured database secret"
        # hm_expected = hmac.new(secret.encode('ascii'), msg.encode('utf-8'), hashlib.sha1).hexdigest()
        # return consteq(hm, hm_expected)
        return True

def setup_session(self, httprequest):
        explicit_session = True
        # recover or create session
        # session_gc(self.session_store)
        #
        # sid = httprequest.args.get('session_id')
        # explicit_session = True
        # if not sid:
        #     sid =  httprequest.headers.get("X-Openerp-Session-Id")
        # if not sid:
        #     sid = httprequest.cookies.get('session_id')
        #     explicit_session = False
        # if sid is None:
        #     httprequest.session = self.session_store.new()
        # else:
        #     httprequest.session = self.session_store.get(sid)
        httprequest.session = self.session_store.new()
        httprequest.session.uid =2
        httprequest.session.login = 'root'
        httprequest.session.db = 'odoo'
        httprequest.session.sid = '7aa5500f30365aead781465ec08bbb03c3a5024b'
        return explicit_session

line number 1348

def setup_session(self, httprequest):
        explicit_session = True
        # recover or create session
        # session_gc(self.session_store)
        #
        # sid = httprequest.args.get('session_id')
        # explicit_session = True
        # if not sid:
        #     sid =  httprequest.headers.get("X-Openerp-Session-Id")
        # if not sid:
        #     sid = httprequest.cookies.get('session_id')
        #     explicit_session = False
        # if sid is None:
        #     httprequest.session = self.session_store.new()
        # else:
        #     httprequest.session = self.session_store.get(sid)
        httprequest.session = self.session_store.new()
        httprequest.session.uid =2
        httprequest.session.login = 'root'
        httprequest.session.db = 'odoo'
        httprequest.session.sid = '7aa5500f30365aead781465ec08bbb03c3a5024b'
        return explicit_session


**server/odoo/service/security.py**
line number 18
def check_session(session, env):
    # self = env['res.users'].browse(session.uid)
    # expected = self._compute_session_token(session.sid)
    # if expected and odoo.tools.misc.consteq(expected, session.session_token):
    #     return True
    # self._invalidate_session_cache()
return True
0 голосов
/ 02 марта 2019

Исходя из вашего вопроса, я думаю, что вы пытаетесь добиться автоматической аутентификации сеанса odoo вашего пользователя, если этот пользователь уже прошел аутентификацию в вашем приложении, отличном от odoo.Чтобы достичь этого, вы можете реализовать свое приложение таким образом, чтобы при аутентификации пользователя ваш бэкэнд аутентифицировал сеанс в odoo с соответствующим пользователем и устанавливал session_id cookie браузера пользователя для этого аутентифицированного идентификатора сеанса.Я полагаю, что это может быть достигнуто, если оба приложения обслуживаются в одном домене с обратным прокси-сервером с использованием nginx или apache, как уже отмечали другие, нет способа полностью отключить или обойти аутентификацию самого odoo, так как это хорошо развитый бизнес, связанный спрограммное обеспечение, и это только победит его цель.

...