"Devise" autentifikatsiyasidagi faqat ba'zi marshrutlarga ruxsat berish

Foydalanuvchilarni Facebook orqali tasdiqlash uchun Devise omniauth foydalanayapman.

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

Bu yaxshi ishlaydi, lekin men "http://app/users/sign_in" sahifasiga kirishdan foydalanuvchilarni cheklashni xohlayman

Marshrutlarni quyidagicha o'zgartirish mumkin:

devise_scope :user do 
  match '/users/auth/facebook/callback' => 'users/omniauth_callbacks#facebook'
end 

Ammo, keyinchalik foydalanuvchilarni boshqaruvchilardan yoqimtasimon xabarlarni qabul qilmaslik uchun qanday qilib yo'naltirishim mumkin?

before_filter :authenticate_user!

Menga faqat devise_scope mos keladigan urldan foydalanishi uchun kerak, aks holda ularni har doim birlamchi 'application # index' marshrutiga qayta yo'naltirish.

0

1 javoblar

Oxirgi qurilma versiyalari sizni har doim root_url sahifasiga yo'naltiradi, faqat omniauth-dan foydalanish va database_authenticatable-ni ishlatmaganda. "New_user_session" bilan "application # index" ga ishora qilib, marshrutni yaratish orqali sozlashingiz mumkin.

1
qo'shib qo'ydi
Rahmat! Modifikatsiyalangan marshrutlar fayli: devise_for: foydalanuvchilar,: controllers => {: omniauth_callbacks => "foydalanuvchilar/omniauth_callbacks"} "foydalanuvchilar/sign_in '=>" dastur haqida ",: as =>: new_user_session end Shuningdek, foydalanuvchi modellarini ishlab chiqish: validatable parametrini olib tashlash kerak edi, chunki faqat omniauth parametrini ishlatganda parol maydoni zarur emas.
qo'shib qo'ydi muallif Edijs Petersons, manba