Sinatra HTTP auth'ını nasıl oluşturabileceğime dair herhangi bir fikrin, modüler bir Sinatra uygulamasında sadece bir sayfada görüntülenmesi mümkün mü?Ekran Sinatra Temel HTTP Auth Tek Sayfada Sadece
cevap
HTTP Auth (Basic auth'ı varsayıyorum) istemiş olduğunuza göre @iain yanıtına ekleme.
class MyApp < Sinatra::Base
def authorized?
@auth ||= Rack::Auth::Basic::Request.new(request.env)
@auth.provided? && @auth.basic? && @auth.credentials && @auth.credentials == ["CUSTOM_USERNAME","SECRET_PASSWORD"]
end
def protected!
unless authorized?
response['WWW-Authenticate'] = %(Basic realm="Restricted Area")
throw(:halt, [401, "Oops... we need your login name & password\n"])
end
end
get "/protected_content" do
protected!
"in secure"
end
get "/" do
"anyone can access"
end
end
İyi şeyler, +1. Ayrıca, [[CUSTOM_USERNAME], "SECRET_PASSWORD"] 'i [ENV [" CUSTOM_USERNAME "], ENV [" SECRET_PASSWORD "]]' i değiştirmenizi ve bunları şifrelerin aktarılmaması için sunucunun ortamına yüklemenizi tavsiye ederim. kodda ve kaynak denetimi vb. aracılığıyla – iain
Aslında kodu basit bir şekilde kodlamak için sabit kodlanmış değere değiştirdim. Bunu belirtmek daha mantıklı geliyor :). – ch4nd4n
Vicky Chijwani'nin yorumu doğrudur, çok daha fazla bilgi vermelisiniz (not alın!) Ama işte bir cevap.
Bunu çeşitli yollarla yapabilirsiniz. Biz kabul edersek kimlik doğrulama yöntemi protected!
denir:
class MyApp < Sinatra::Base # assumed for all examples
get "/only-this-page-has-auth" do
protected!
"Only admin allowed!"
end
get "/this-wont-have-auth" do
"Everybody can access this"
end
end
Yoksa sinatra-contrib gem (gelişmiş bir kullanım belki biraz daha fazla Sinatra::Namespace
kullanacağız eğer a filter
before "/only-this-page-has-auth" do
protected!
end
get "/only-this-page-has-auth" do
"Only admin allowed!"
end
get "/this-wont-have-auth" do
"Everybody can access this"
end
Veya kullanabilirsiniz ama bunu yapmak için güzel bir yol buluyorum ve bunu korumalı sayfa şimdi "/ admin-only-this-page-has-auth" adresinde olacaktı:
iyi yolu kullanmaktır: https://rubygems.org/gems/sinatra-basic-auth belgelerine harika:
require "sinatra"
require "sinatra/basic_auth"
# Specify your authorization logic
authorize do |username, password|
username == "john" && password == "doe"
end
# Set protected routes
protect do
get "/admin" do
"Restricted page that only admin can access"
end
end
- 1. http temel auth
- 2. sinatra ve http
- 3. Sadece tek bir sayfada css nasıl kullanılır?
- 4. Sinatra OPSİYONLARI HTTP Verb
- 5. HTTPBuilder temel auth neden çalışmıyor?
- 6. Test HTTP Basic Auth 2.2 +
- 7. Lümen HTTP Temel Kimlik Doğrulaması
- 8. HTTP üzerinden HTTP Auth - PHP_AUTH_USER ayarlanmadı mı?
- 9. AngularJS Sayfalama sırasını sadece görüntülenen sayfada etkiler
- 10. Sinatra içinden bir HTTP isteği nasıl dökülür?
- 11. Tek bir sayfada birden fazla easyXDM
- 12. jquery ajax ve preemptive temel auth
- 13. Sinatra
- 14. CSS Yazdırma Düzeni - Tek Sayfada Yazdırma
- 15. ActiveAdmin: HTTP temel kimlik doğrulaması nasıl kurulur?
- 16. Tek sayfada birden fazla Google Grafik türü
- 17. Tanımsız işlev the_post_thumbnail ana sayfada sadece
- 18. Laravel Sayfalandırması sadece ilk sayfada çalışır
- 19. Sadece http gönderi yöntemi
- 20. Tek bir sayfada birden çok Dropzone
- 21. vim'de sadece ekran çizgisini vurgulayın?
- 22. jquery Ekran boyutu temel alındığında ifade
- 23. Eksik Temel HTTP kimlik giriş
- 24. Android: Intent.EXTRA_ALLOW_MULTIPLE sadece tek
- 25. Ekran kaydı tek bir pencere
- 26. Auth boş sayfa
- 27. libgdx gölgelendiriciler - temel gölgelendirici, ancak ekran boş
- 28. önle HTTP Temel Kimlik Doğrulama Bir sayfada farklı bir etki alanından bir görüntü var ve bu görüntü HTTP Temel Kimlik Doğrulaması ile korunuyorsa görüntüleri
- 29. Amaç-c HTTP Temel kimlik doğrulaması
- 30. WCF .net 4.0 HTTP Temel Kimlik Doğrulaması
Sorunuz net değil kullanımı çok basit. Lütfen [açıkça belirtin ve SSS'de belirtildiği gibi ayrıntıları ve bağlamı ekleyin] (http://stackoverflow.com/questions/how-to-ask), böylece diğer kullanıcılar size etkili bir şekilde yardımcı olabilir. –