ruby 最简单的OmniAuth开发人员策略实现(OmniAuth :: Strategies :: Developer)。 http://www.rubydoc.info/github/intri

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby 最简单的OmniAuth开发人员策略实现(OmniAuth :: Strategies :: Developer)。 http://www.rubydoc.info/github/intri相关的知识,希望对你有一定的参考价值。

Rails.application.routes.draw do
  match '/auth/:provider/callback', to: 'sessions#create', via: %i(get post)
  match '/auth/sign_out', to: 'sessions#delete', via: %i(get)

  root 'welcome#index'
end
Rails.application.config.middleware.use OmniAuth::Builder do
  unless Rails.env.production?
    provider :developer, fields: %i(name email), uid_field: :email
  end
end
hello <%= current_user %>
</br>

<% if current_user %>
  <%= link_to('Sign out', '/auth/sign_out') %>
<% else %>
  <%= link_to('Sign in', '/auth/developer') %>
<% end %>
class SessionsController < ApplicationController
  skip_before_action :verify_authenticity_token, only: :create

  def create
    self.current_user = auth_hash

    redirect_to '/'
  end

  def delete
    session[:user_id] = nil

    redirect_to '/'
  end

  protected

  def auth_hash
    request.env['omniauth.auth']
  end
end
class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception

  def current_user=(user)
    session[:user_id] = user.uid
  end

  def current_user
    session[:user_id]
  end
  helper_method :current_user
end

以上是关于ruby 最简单的OmniAuth开发人员策略实现(OmniAuth :: Strategies :: Developer)。 http://www.rubydoc.info/github/intri的主要内容,如果未能解决你的问题,请参考以下文章

使用 Ruby 2.7 读取 Keycloak OmniAuth::AuthHash 元素

ruby 具有RoleModel,Omniauth和Gravatar的用户类

ruby 一个示例sinatra omniauth客户端应用程序

如何注销 Facebook - 在 Rails 应用程序中使用代码(Ruby on Rails Omniauth)

使用omniauth-twitter的Ruby on Rails应用程序在heroku上不起作用“很抱歉,出了点问题。”

如何使用 omniauth / oauth 对每秒登录次数进行基准测试? (红宝石+rspec)