ben

OMÜ , Bilgisayar Mühendisliği, 13'

21 Ekim 2015 Çarşamba

rails doorkeper dipnotlar


    Daha önceden yapmaya calıstıgımız algoritma  clientteki giriş login mekanizmasını providera taşıyarak, kullanıcıların login işlemlerinde providera yönlendiirlmesiydi

1.Durum:  Providerın ana menusunde alt uygulama iconu olduğunda buna tıklayarak alt programa loginsiz girmesi. yani çift yönlü logi/ logout kontrolu

Çözüm 1:
          provider da ana sayfaya link koyalım ve 3000 portunda calısan programa gitsin:
             <%= link_to "http://localhost:3000/"  do %>
                    <p> Alt program</p>
              <%end%>
     
 3000 portunda çalışan alt programa gelelim:
           rootla set adılen açılış sayfasının kontrollarına:

         class HomeController < ActionController::Base
           def index
                 if current_user==nil
                       redirect_to     user_omniauth_authorize_path(:doorkeeper)
                 end

           end
          end

     Böylece programn nerden ve nasıl açılırsa acılsın  giriş yapan kullanıcı olmadığı takdirde providerdan girişe zorlanacak




2. Durum: Herhangi bir alt program yada  providerdan cıkıs yapıldığında, bağlı tum alt programlardan ve providerdan  otomatik cıkış yapılması

 Çözüm 2: Provider ve tum alt uygulamalarda:
    -alt uygulamalrda:
         controller/user/session_controller.rb
               def destroy
                 super
                     session[:user_id] = nil
                    session[:access_token] = nil
                    cookies.clear(:domain => :all)
                end
     -providerda
          controller/user/session_controller.rb
               def destroy
                 super
                 cookies.clear(:domain => :all)
                end

      rootes.rb

    devise_for :users, :controllers => {sessions: 'user/sessions', :omniauth_callbacks => "omniauth_callbacks" }


          initializers/session_store
                     Rails.application.config.session_store :cookie_store, key: '_uygulamaA_session', :domain => :all





3. Durum: sisteme yeni kullanıcı eklendiğinde alt programa tıklayarak gitmek istediğinde aşağıdaki ekran geliyor. bunu arka planda doğrulamasını yapmak:

  Çözüm 3:  config/initializsers/doorkeper.rb
                      
                       skip_authorization do
                              true
                        end




4.Durum:  Client tarafında oturum açma eylemi devise ile sağlanmıyorsa, bağlantı için  paravan bir user modelş oluşturup oturum açma eyleminin omnioauth callbacke gelmesini sağlayın. burda gerekli controlleri yaptıktan sonra ;

  session[:admin_id] = @admin.id

komutu ile oturum açtırabilirsiniz. Client tarafında Admin modeli üzerinden oturum açtırılmış fakat kullanılan yapı devise değil. @admin  providerdan gelen oturum açan kişi.