2012-03-28 3 views
6

Şu şekilde bir formum var: remote => true; ajax aracılığıyla gönderileceği anlamına gelir.devise'nın authenticate_user ile nasıl başa çıkılacağı! ajax çağrısı ile?

before_filter: authenticate_user!, :only => [:create] 

Ben sadece kaynak oluşturmak için kullanıcı teyit izin İçin: denetleyici olarak

, böyle kod var. Kimlik doğrulama başarısız olduğunda

Ancak, bir

Completed 401 Unauthorized 

yükseltecektir hazırlamak ve hiçbir mütevazi javascript hale getirilir.

Ama şeyleri umut şöyledir:

vasiyetle sonra kullanıcılara flaş göstermek, benim .js.erb hale flaş bazı mesajlar ayarlayın ve.

Nasıl bunu başarmak için?

+0

ben ... inanamıyorum ama şu anda vasiyetle 2.0.0.rc ile aynı sorun var ... Ben sadece Sorunu gerçekten değiştirmek istiyorum oturum denetleyicisi eylemi oluşturmak istemiyorum ... ayrıca authenticate_user geçersiz kılma! gülünç gibi görünüyor ... navigasyon biçimleri yapılandırmada değişiklik (ekleme: js,: json) benim için işe yaramıyor –

cevap

3

Kendi authenticate_user yapmak gerek! eylem ve bu eylemde istediğiniz davranışa sahip olabilirsiniz.

def authenticate_user! 
    unless current_user 
    render 'my_js' 
    end 
end 
10

Oldukça neşeli ama authenticate_user geçersiz kılma olmadan

config.http_authenticatable_on_xhr = false 

yanlış ... benim için hile yaptı için devise.rb http_authenticatable_on_xhr değiştirin! yöntem

not: Ben de ekledi: seyir biçimleri js

config.navigational_formats = [:"*/*", "*/*", :html, :js] 
+0

bu mantıkta ... bayrak gerçek ajax isteğine ayarlanmış olarak sadece 401 için başlıkları döndürür - json çağrıları için yararlıdır. Gerçek vücut yanıtını istediğinizde, bu bayrağı false –

+1

olarak ayarlamanız gerekir Evet işe yarıyor! Ama hala bir sorunum var. Kimlik doğrulama başarısız olduğunda, tasarlama kullanıcıları/sign_in.js'yi nasıl oluşturacak, nasıl değiştirecek? Demek istediğim, kendi js dosyamı oluşturmak ve mutlaka public/users/klasöründe bulunmak istemiyorum. – HanXu

+0

Kullanıcıların/sign_in.js.erb kamu altında olmamalı oldukça emin/kullanıcıların Bahsettiğiniz ama app/views/kullanıcılar/sign_in.js.erb içine (ya da her ne vasiyetle anlatmak) o klasörü Geri sorununuza duyuyorum - Bu, arayanlara 'kimlik doğrulama_kullanıcıyı geçersiz kılmadan ulaşılamadığından başka bir görünüm vermekten korkuyorum! –