Настройване на Devise и OmniAuth за обслужване на Rails приложение
Оферта от 8host.com

Повечето приложения на Ruby on Rails изискват механизми за удостоверяване, за да работят правилно. Можете сами да разработите такъв механизъм или да използвате специален скъпоценен камък, наречен Devise, който ви позволява да създавате пълноценни системи за удостоверяване на потребителите в рамките на няколко минути.
Този урок ще ви помогне да създадете приложение, използвайки скъпоценните камъни на Devise и OmniAuth.
Изисквания
Ще ви трябват най-новите версии на RVM, Ruby и Rails, за да работите. Полезни инструкции за инсталиране и актуализиране на тези програми можете да намерите в специален раздел на нашия Информаториум.
Забележка : Този урок използва Ruby 2.1.2 и Rails 4.1.5.
Стъпка 1: Създаване на Rails приложение
Rails приложенията се препоръчва да се съхраняват в отделна директория.
Създайте директория като тази:
mkdir rails_apps cd rails_apps
Инициализирайте RVM среда, преди да започнете да използвате команди на Rails.
/.rvm/scripts/rvm rvm използва ruby -по подразбиране
Забележка : Това трябва да се прави всеки път, когато терминалната сесия се рестартира.
В това ръководство новото приложение ще се нарича myapp. Създайте приложение и променете в неговата директория:
релси нов myapp cd myapp
Забележка : Всички Rails команди трябва да се изпълняват в директорията на приложението (в този случай,
2: Добавяне на скъпоценни камъни
Сега трябва да добавим скъпоценните камъни на Devise и OmniAuth. Освен това ще ви трябват отделни скъпоценни камъни, за да поддържате всяка отделна OAuth услуга; например, за да удостоверите автентичността с Facebook, имате нужда от omniauth-facebook gem.
Добавете следния код към
скъпоценен камък 'therubyracer' gem 'devise' gem 'omniauth' gem 'omniauth-facebook'
Необходими са допълнителни скъпоценни камъни за поддържане на удостоверяване с други услуги:
- Twitter - omniauth-twitter
- Amazon-omniauth-amazon
- Google-omniauth-google
- Github - omniauth-github
Добавете ги към Gemfile, ако е необходимо.
За да инсталирате тези скъпоценни камъни, въведете:
3: Функции на приложението
Сега трябва да добавим някои тестови страници на приложението, които ще бъдат достъпни само след удостоверяване.
Можете да използвате функция на Rails, наречена скеле, за да направите това. Използвайки командата rails g scaffold, можете просто да зададете параметрите на модела и Rails независимо ще сглоби пълноценни страници за CRUD (Създаване, четене, актуализация, изтриване) операции. С други думи, заедно с модела, Rails ще създаде контролер и изглед.
релси g скеле Име на продукта: низ цена: цяло число описание: текст
След това трябва да определите основната директория на приложението.
Rails.application.routes.draw do resources :products root 'products#index' end
След това можете да тествате приложението. Стартирайте сървъра за разработка:
В момента приложението не изисква удостоверяване.
Добавете малко съдържание с Нов продукт. За да спрете сървъра за разработка и да се върнете към терминала, натиснете Ctrl+C.
4: Настройка на устройството
rails генерират devise:install rails генерират devise Потребител rake db:migrate
Това ще добави формулярите за вход и регистрация, както и цялата свързана с тях логика.
Приложението вече има основна система за удостоверяване, чрез която потребителите могат да се регистрират и да имат достъп до съдържание. Въпреки това, всички страници на приложения все още са достъпни безудостоверяване. За да промените това, редактирайте файла
/rails_apps/myapp/app/controllers/application_controller.rb и добавете действието authenticate_user!.
Сега можете да стартирате отново сървъра за разработка:
За да регистрирате нов потребител, отворете връзката:
5: Поддръжка на OmniAuth
Спрете сървъра за разработка (CTRL-C) и добавете нова колона към модела Devise, uid.
rails g migration AddColumnsToUsers доставчик uid rake db:migrate
Стъпка 6: Настройване на услугата OAuth
Посетете уебсайта на услугата OAuth и регистрирайте приложението си там (например, за да настроите поддръжка за удостоверяване във Facebook, първо трябва да регистрирате приложението си във Facebook). Процедурата за регистрация се различава в зависимост от услугата. По време на процеса на регистрация ще бъде поискан URL адрес за обратно извикване:
- Facebook: http://localhost:3000/users/auth/facebook/callback
- Amazon: http://localhost:3000/users/auth/amazon/callback
- Twitter: http://localhost:3000/users/auth/twitter/callback
- Google: http://localhost:3000/users/auth/google/callback
След регистрацията програмата ще предостави клиентски данни (ID и секрет), които ще са необходими в следващата стъпка за конфигуриране.
Стъпка 7: Актуализирайте Devise Initializer
/rails_apps/myapp/config/initializers/devise.rb и добавете ИД на клиента и тайната в края на файла (преди крайния ред). Също така се препоръчва да актуализирате mailer_sender с потребителско или сървърно име.
Devise.setup do config #Replace example.com with your own domain name config.mailer_sender = '[email protected]' require 'devise/orm/active_record' config.case_insensitive_keys = [ :email ] config.strip_whitespace_keys = [ :email ] config.skip_session_storage = [:http_auth] config.stretches = Rails.env.test? ? 1 : 10 config.reconfirmable = true config.expire_all_remember_me_on_sign_out = true config.password_length = 8..128 config.reset_password_within = 6.hours config.sign_out_via = :delete #Добавете своя ID и тайна тук #ID първо, секретно второ config.omniauth :facebook, "db381dc9990be7e3bc42503d0", "5b0824c2722b65d29965f1a1df" край
Стъпка 8: Актуализирайте потребителския модел
Потребителският модел, генериран от Devise, трябва да съдържа данни за услугата. Добавете следните елементи към вашия код:
:omniauthable, :omniauth_providers => [:facebook]
(не забравяйте да поставите запетая). Също така трябва да създадем нов метод from_omniauth, който ще извлече наличните данни след удостоверяване.
След редактиране на файла
/rails_apps/myapp/app/models/user.rb ще изглежда така:
class User [:facebook] def self.from_omniauth(auth) where(provider: auth.provider, uid: auth.uid).first_or_create do user user.prov > user.u > user.email = auth.info.email user.password = Devise.friendly_token[0,20] край край край
Запазете и затворете файла.
Стъпка 9: Добавяне на контролер
Rails.application.routes.draw do devise_for :users, :controllers => < :omniauth_callbacks =>"обратни повиквания" > ресурси :продукти корен 'продукти#индекс' край
След това трябва да създадете нов файл,
/rails_apps/myapp/app/controllers/callbacks_controller.rb и добавете този код към него:
За да настроите повече OAuth услуги, трябва да добавите метод за всяка от тях. Името на метода трябва да съвпада с името на услугата.
Приложението е готово. Стартирайте отново услугата: