Rails 3.0.9 ile HTTP Temel Kimlik Doğrulaması kullanıyorum ve kullanıcının html.erb içinde bazı öğeleri gösterme yetkisi olup olmadığını kontrol etmem gerekiyor Dosyalar. Bunu nasıl yapabilirim?Kullanıcının yetkilendirilmiş olup olmadığını kontrol edin (HTTP Temel Kimlik Doğrulama, Rails 3.0.9)
cevap
Vitaly'nin yaklaşımı iyi bir çözüm gibi görünüyor, ama vardır Kimlik bilgileri yanlış olsa bile, giriş yapmayı deneyen herkese yönetici erişimi veren ciddi bir hata.
:İlk, (kimlik doğrulaması gerektiren işlemlerde) bir çift fonksiyonel testler (o upvoted alır ve insanların körü körüne güvenlik kusur ile "doğru" cevabı kabul etmiyoruz umuduyla cevap olarak bu Gönderme)
test "admin is set with correct credentials" do
@request.env['HTTP_AUTHORIZATION'] = ActionController::HttpAuthentication::Basic.encode_credentials("user", "pass")
get :index
assert_response 200
assert_equal true, session[:admin]
end
test "admin isn't set with incorrect credentials" do
@request.env['HTTP_AUTHORIZATION'] = ActionController::HttpAuthentication::Basic.encode_credentials("user", "incorrect")
get :index
assert_response 401
assert_not_equal true, session[:admin]
end
Bunu Vitaly koduyla çalıştırırsanız, ikinci sınama başarısız olur, çünkü parola hatalı olsa bile session[:admin]
doğru olarak ayarlanmıştır.
Burada düzgün session[:admin]
ayarlar ve hem testler geçmesi yapmak benim kod: Bu güzel görünüyor
private
def authenticate
authenticate_or_request_with_http_basic do |user_name, password|
session[:admin] = (user_name == "name" && password == "pass")
end
end
Sen temel kimlik doğrulama ile CanCan işi yapabilir, bu kılavuzu https://github.com/ryanb/cancan/wiki/changing-defaults okumak, sonra sadece giriş yapmış kullanıcı adı dayalı izinler ayarlayabilirsiniz olarak genellikle Cancan kullanın.
ama olmayan gerekli karmaşık hale getiriyor. Kullanıcının oturum açıp açmadığını kontrol etmek için oturum kullanmanın kullanılabilirliğini düşünüyorum. Herhangi bir fikir? – Vitaly
- 1. Ruby websocket Kullanıcının olup olmadığını kontrol edin
- 2. Kullanıcının cihazında Twitter uygulamasının mevcut olup olmadığını kontrol edin
- 3. Kullanıcının db üzerinde var olup olmadığını kontrol edin Strongloop
- 4. Yalancı olup olmadığını kontrol edin
- 5. Doğrulama/Yapılandırma Profilinin iPhone'da yüklü olup olmadığını kontrol edin
- 6. Ajax: HTTP Temel Kimlik doğrulama ve kimlik doğrulama bilgisi
- 7. Görüntülerin yüklü olup olmadığını kontrol edin?
- 8. Öğenin selenyumda tıklanabilir olup olmadığını kontrol edin
- 9. Yolun ağda olup olmadığını kontrol edin
- 10. Resim olup olmadığını kontrol edin php
- 11. Uzak makinede dosya olup olmadığını kontrol edin
- 12. Tablonun var olup olmadığını kontrol edin C#
- 13. Türün bir arabirim olup olmadığını kontrol edin
- 14. Anahtarın sözlükte olup olmadığını kontrol edin. Değilse,
- 15. FinderSync uzantısı seçili olup olmadığını kontrol edin
- 16. Rest API'da kayıt olup olmadığını kontrol edin.
- 17. Java'da ResultSet boş olup olmadığını kontrol edin
- 18. Bir sayfanın açık olup olmadığını kontrol edin
- 19. img'nin src olup olmadığını kontrol edin
- 20. Ortam değişkeni ayarlanmış olup olmadığını kontrol edin
- 21. javascript css taşma olup olmadığını kontrol edin
- 22. $ viewContentLoaded Başarılı olup olmadığını kontrol edin
- 23. Makinemin internet erişimi olup olmadığını kontrol edin
- 24. Kaydedilecek bekleyen değişiklikler olup olmadığını kontrol edin
- 25. Tablo üzerinde kısıtlama olup olmadığını kontrol edin
- 26. Veri çerçevesinin mevcut olup olmadığını kontrol edin
- 27. CSS @media Webkit olup olmadığını kontrol edin
- 28. Öğenin animasyonlu olup olmadığını kontrol edin CSS3
- 29. Java'da sürekli değişiklik olup olmadığını kontrol edin?
- 30. Nesnenin nesne listesinde olup olmadığını kontrol edin
Teşekkürler, haklısınız. Bu hatayı nasıl yaptığımı gördüm. Umarım pek fazla insan bunu etkilemez. Doğru cevabı değiştirmek için çok geç kaldığım için üzgünüm. Bildirimi fark etmedim. – Vitaly