Jakiś pomysł jak mogę zrobić wyświetlacz auth Sinatra HTTP tylko na jednej stronie w modułowej aplikacji Sinatra?Wyświetlacz Sinatra Podstawowe HTTP Auth na jednej stronie tylko
Odpowiedz
Dodanie do odpowiedzi @iain, ponieważ zapytałeś o HTTP Auth (zakładam Basic auth).
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
Dobre rzeczy, +1. Chciałbym również zalecamy zmianę '[„CUSTOM_USERNAME”,„tajne_haslo”]' na '[ENV [„CUSTOM_USERNAME”] ENV [„tajne_haslo”]]' i ładuje je w środowisku serwera tak, że hasła nie są przekazywane wokół w kodzie i poprzez kontrolę kodu źródłowego itd. – iain
Rzeczywiście zmieniłem kod na wartość zakodowaną, aby było prostsze. Warto wspomnieć o tym :). – ch4nd4n
Komentarz Vicky Chijwani jest prawidłowa, należy dać dużo więcej informacji (Uwaga!), Ale tutaj jest odpowiedź.
Można to zrobić na kilka sposobów. Jeśli zakładamy, że metoda uwierzytelniania jest nazywany protected!
:
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
Albo można użyć 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
lub jeśli zamierzamy używać Sinatra::Namespace
od sinatra-contrib gem (być może nieco bardziej zaawansowanego użycia , ale używam go bardzo często, ponieważ uważam, że jest to dobry sposób na robienie rzeczy) i strona chroniona będzie teraz dostępna w "/ admin/only-this-page-has-auth"
namespace "/admin" do
before do
protected!
end
get "/only-this-page-has-auth" do
"Only admin allowed!"
end
end
get "/this-wont-have-auth" do
"Everybody can access this"
end
Najlepszym sposobem jest użycie: https://rubygems.org/gems/sinatra-basic-auth Dokumentacja jest wielki:
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
http://www.rubydoc.info/gems/sinatra-basic-auth/0.1.0 To naprawdę proste w użyciu
- 1. trzeba sprężyny java bezpieczeństwo config przykład pokazujący podstawowe auth tylko
- 2. http auth auth z dokumentacją api swashbuckle
- 3. Wiele easyXDM na jednej stronie
- 4. Sinatra i HTTP PUT
- 5. Podstawowe uwierzytelnianie HTTP na iPhonie
- 6. Podstawowe uwierzytelnianie HTTP warunkowe
- 7. Prawidłowa odpowiedź na żądanie HTTP HEAD na stronie tylko HTTPS
- 8. Wyświetlacz pierwsza litera tylko
- 9. CORS i HTTP basic auth
- 10. PhoneGap Wyłącz ekran obracać na jednej stronie?
- 11. jQuery wiele motywów na jednej stronie
- 12. Kontrolery wielu Angularów na jednej stronie
- 13. prettyPhoto wiele galerii na jednej stronie
- 14. Wiele wystąpień Google Maps na jednej stronie
- 15. Wiele szablonów AngularJS na jednej stronie
- 16. CSS: Nagłówek i stopka wyświetlacz tylko na pierwszej stronie generowanego PDF
- 17. http podstawowy auth z vert.x
- 18. ActiveAdmin: Jak skonfigurować podstawowe uwierzytelnianie HTTP?
- 19. Wiele formularzy HTML na jednej stronie
- 20. szyny turbolinks załadować skrypt na jednej stronie
- 21. Wiele instancji na jednej stronie z Javascriptem
- 22. Laravel Wielokrotna paginacja na jednej stronie
- 23. Sinatra używająca klienta websocket do odpowiedzi na żądanie http
- 24. HTTP basic auth for Rack :: Aplikacja statyczna na Heroku
- 25. Ajax: HTTP Basic Auth i cookie uwierzytelniający
- 26. Python urllib2, podstawowe uwierzytelnianie HTTP i tr.im
- 27. Błąd modułu Google Api Auth Http
- 28. Woocommerce - Uzyskaj SKU w jednej stronie produktu
- 29. wyświetlacz wykreślono dane tylko w legendzie
- 30. Jak dodać wiele kontrolerów na jednej stronie w AngularJS
Twoje pytanie nie jest oczywista. Proszę [być jednoznaczne i dodaj szczegóły i kontekst, jak wspomniano w FAQ] (http://stackoverflow.com/questions/how-to-ask), dzięki czemu inni użytkownicy są w stanie skutecznie pomóc. –