导轨,谷歌的OAuth和两个不同的登录范围(管理员/前)

问题描述 投票:0回答:1

我现在用的宝石omniauth-google-oauth2

在我来说,我有2米不同的范围:

  • AdminUsers
  • FrontUsers

我想使用谷歌验证两种但由于只有一个回调URL我不知道如何识别如果认证是从FrontUser或管理用户和未来。

我不能用“名”或“电子邮件”为范围的标识符,因为相同的名称/电子邮件可以在这两个范围。

我曾试图定义2个不同的回调网址,并添加帕拉姆redirect_uri到第一验证网址:

对于管理员登录:

<%= link_to "Login with Google", "/auth/google_oauth2?redirect_uri=http://example.com/admin/auth/google_oauth2/callback" %>

对于前登录:

<%= link_to "Login with Google", "/auth/google_oauth2?redirect_uri=http://example.com/front/auth/google_oauth2/callback" %>

它的工作原理几乎是完美的,问题是,request.env['omniauth.auth']是空的,因为我们在其他issues都看到了。

我曾尝试过这样:

<%= link_to "Login with Google", "/auth/google_oauth2?callback_path=/admin/auth/google_oauth2/callback" %>

但帕拉姆callback_path只是忽略。

如果我至少可以发送将在回调返回就足够了一个标志参数。

我可以实现什么解决办法吗?

ruby-on-rails google-oauth2
1个回答
0
投票

我明白了,其实,我可以发送在回调返回PARAM:

<%= link_to "Login with Google", "/auth/google_oauth2?from=admin" %>

然后在回调控制器动作我可以看到它:

request.env['omniauth.params']['from']

然后,我可以派生基础上,我的逻辑。

© www.soinside.com 2019 - 2024. All rights reserved.