/ / रेलकर्मी एकीकरण रेल 4 अनुप्रयोग के साथ - रूबी-ऑन-रेल, डॉकऑपर

रेल 4 आवेदन के साथ द्वारपाल एकीकरण - रूबी-ऑन-रेल, डोरकीपर

कर्ता गीथुब रीडमे के निर्देशों (मैंने सोचा) के बाद, मैं उतनी ही दूर हो गया before_action.

class ReadingsController < ApplicationController
before_action :doorkeeper_authorize! # Require access token for all actions
...
end

RubyMine ने शिकायत की है कि :doorkeeper_authorize! कार्यक्षेत्र में परिभाषित नहीं है। अगर मैं इसे किसी भी तरह से चलाता हूं, तो मुझे मिलता है:

Processing by ReadingsController#index as HTML
Filter chain halted as :doorkeeper_authorize! rendered or redirected
Completed 401 Unauthorized in 48ms (ActiveRecord: 0.0ms)

कंसोल पर, और पूरी तरह से रिक्त परिणाम। जब मैं दृश्य स्रोत को देखता हूं तो यह नियमित परिणाम पृष्ठ जैसा दिखता है।

खैर, क्या यह असफलता है, या यह वास्तव में मुझे बता रहा है कि मैं अनधिकृत हूं? और अगर यह है, तो मैं किसी को वास्तव में, अच्छी तरह से प्रमाणित करने की अनुमति देने के लिए एक रीडायरेक्ट को तार करने के लिए क्यों करता हूं?

उत्तर:

उत्तर № 1 के लिए 1

निम्नलिखित एक कामकाजी उदाहरण मैं "थोड़ी देर पहले बनाया है, आपका कोड पूरी तरह से अनपेक्षित स्थान पर विफल हो रहा है: इस तरह के एक ब्लॉक में Doorkeeper का इनिशलाइज़र

resource_owner_authenticator do
current_user || begin
session[:guest_return_url] = request.fullpath
redirect_to(user_omniauth_authorize_path(:facebook))
end
end

मुझे नहीं पता क्या करूँ आप उस ब्लॉक में है, लेकिन सामान्य तौर पर यह एक ऐसी वस्तु को वापस करना चाहिए जिसे एक के रूप में माना जाना चाहिए संसाधन स्वामी। Doorkeeper विफल हो गया क्योंकि वह ब्लॉक ऐसा करने में विफल रहा। मेरे उदाहरण में इस ब्लॉक को लागू करने के लिए, मैं "Devise का उपयोग कर रहा हूँ" current_user सहायक और एक वापसी redirect_to जब कोई उपयोगकर्ता प्रमाणित नहीं होता है (तो इसे ए में निष्पादित किया जाता है before_action आख़िरकार)।

तो Doorkeeper के लिए "आपको" आपको यह बताने की आवश्यकता है कि "मालिक को कैसे पहचाना जाए"। अर्थात् प्रमाणीकरण कि Doorkeeper टी हैंडल नहीं है।