使用google oauth配置多个登录会话

时间:2015-09-22 09:28:41

标签: oauth oauth-2.0 google-oauth odoo google-authentication

我正在使用Google OAuth for Google使用Odoo登录。

一切正常,我可以使用谷歌登录没有问题。但是,我无法使用相同的Google凭据打开多个会话

例如,如果我打开两个会话,一个在chrome中,另一个在firefox中,则旧会话将被注销。

我不明白这是什么问题,因为无论我开始多少次会议如果我使用我的用户名和密码单独登录,而不使用google OAuth,没有任何会话获得退出 - 工作正常。

我想知道它与代码有关,所以我做了很多调整但没有任何作用。我看到它一度无法获得旧会话的会话信息。但是我的问题不是代码。

我的问题是,是否有任何配置或设置在 google OAuth或Odoo 8中设置,允许用户同时拥有多个会话或者是否存在设置使用谷歌OAuth与Odoo,我需要知道吗?

任何想法都会非常有用,因为我已经在这方面苦苦挣扎了几天。谢谢!

2 个答案:

答案 0 :(得分:0)

我为Odoo V9构建了一个模块。没有这个模块,Odoo只保存一个令牌。但是当你在多台计算机上使用odoo时,你会为每台计算机使用一个令牌。

默认情况下,odoo不支持多令牌。您需要修改模块auth_oauth的代码。

使用此模块可以保存所有令牌,就像您可以进行多重连接一样。

您可以下载并安装此模块:https://github.com/IguanaYachts/auth_oauth_multi_token.git

class ResUsers(models.Model):
_inherit = 'res.users'

oauth_access_token_ids = fields.One2many('auth.oauth.multi.token', 'user_id', 'Tokens', copy=False)
oauth_access_max_token = fields.Integer('Number of simultaneous connections', default=5, required=True)

@api.model
def _auth_oauth_signin(self, provider, validation, params):
    res = super(ResUsers, self)._auth_oauth_signin(provider, validation, params)

    oauth_uid = validation['user_id']
    user_ids = self.search([('oauth_uid', '=', oauth_uid), ('oauth_provider_id', '=', provider)]).ids
    if not user_ids:
        raise openerp.exceptions.AccessDenied()
    assert len(user_ids) == 1

    self.oauth_access_token_ids.create({'user_id': user_ids[0],
                                        'oauth_access_token': params['access_token'],
                                        'active_token': True,
                                        })
    return res

@api.multi
def clear_token(self):
    for users in self:
        for token in users.oauth_access_token_ids:
            token.write({
                'oauth_access_token': "****************************",
                'active_token': False})

@api.model
def check_credentials(self, password):
    try:
        return super(ResUsers, self).check_credentials(password)
    except openerp.exceptions.AccessDenied:
        res = self.env['auth.oauth.multi.token'].sudo().search([
            ('user_id', '=', self.env.uid),
            ('oauth_access_token', '=', password),
            ('active_token', '=', True),
        ])
        if not res:
            raise

答案 1 :(得分:-1)

如果您按照上述步骤操作,则可以通过OAuth模块使用OpenERP成功配置Google Apps(Gmail)。我唯一缺少的是我在YouTube视频中找到的额外步骤;你必须:

  • 转到设置 - 用户
  • 要向您提供OAuth访问权限的用户,请使用“通过电子邮件发送重置密码说明”选项向他们重置密码。
  • 要求您的用户(或您自己)使用他们在电子邮件中收到的链接,但是,当他们打开时,他们只会看到登录屏幕并显示“使用Google登录”选项。 (没有可用的典型更改密码选项)
  • 使用合适的Google帐户瞧! - 现在它顺利连接。
  

如果配置Oauth2和odoo,请参阅此链接以获取更多详细信息

  

https://odootricks.wordpress.com/2014/09/18/setting-up-google-apps-authentication-for-odoo/