gpt4 book ai didi

ruby-on-rails - 使用 Cognito 和 Devise 对应用程序进行身份验证

转载 作者:行者123 更新时间:2023-12-05 07:24:38 26 4
gpt4 key购买 nike

我正在尝试将 AWS Cognito 实现到我的应用程序中,以实现更好的全方位身份验证。该系统是一个 Rails 应用程序,目前使用 Warden/Devise 作为处理用户帐户(登录、注册)的方法。

我的目标是拥有一个包含应用程序用户列表的 AWS 用户池。当使用 Cognito 验证用户时,我希望搜索我们当前用于该角色的表,并根据为他们分配的角色将用户移动到系统的正确区域。

我已经开始实现处理此问题的逻辑,但遇到了障碍。

请看下面我的代码。

cognito_authenticatable.rb

用于处理认知身份验证的逻辑。我在这里要做的就是检查用户是否已注册并返回有效 token ,这样我就可以更喜欢内部应用程序检查来收集用户角色。

def authenticate!
if params[:login]
region_name = 'us-east-2'
user_pool_id = 'us-east-2_Qj78BNQon'
client_id = '1pv3eno72e51mll3q36cuiojmr'

client = Aws::CognitoIdentityProvider::Client.new(
region: region_name
)

resp = client.initiate_auth({
client_id: client_id,
auth_flow: "USER_PASSWORD_AUTH",
auth_parameters: {
"USERNAME" => email,
"PASSWORD" => password
}
})
end
end

divise.rb

此代码只是将新的身份验证策略添加到应用程序管理员服务中。

config.warden do |manager|
manager.strategies.add(:cognito,
Devise::Strategies::CognitoAuthenticatable)
manager.default_strategies(:scope => :login).unshift :cognito
manager.default_strategies(:scope => :login).pop
end

控制台内的输出错误是

Aws::Errors::MissingCredentialsError (unable to sign request without credentials set):

config/initializers/cognito_authenticatable.rb:23:in `authenticate!'

这是来自正在运行的本地主机应用程序的图像。

Webapplication output once i complete the login form.

在这方面的任何帮助都会很棒。

提前致谢。

最佳答案

一种解决方案是在 Cognito 用户池中创建应用程序客户端时取消选中生成客户端密码的选项。默认情况下选中此选项,您必须知道取消选中它(https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-client-apps.html)。

By default, user pools generate a client secret for your app. If you don't want that to happen, clear Generate client secret.

只能在创建新客户端期间取消选中客户端密码,因此您可能必须删除客户端应用程序并创建一个新客户端应用程序(没什么大不了的)。

我还在一篇 Medium 文章中收集了我在 Cognito、Devise、Rails 和 VueJS 方面的知识:https://medium.com/@morgler/beta-learnings-from-developing-vuejs-quasar-aws-amplify-and-cognito-application-dd38ec58b881

关于ruby-on-rails - 使用 Cognito 和 Devise 对应用程序进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55291791/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com