Bất kỳ ý tưởng làm thế nào tôi có thể làm cho Sinatra HTTP auth hiển thị chỉ trên một trang trong một ứng dụng mô-đun Sinatra?Hiển thị Sinatra Basic HTTP Auth On One Page Chỉ
Trả lời
Thêm vào câu trả lời @iain, vì bạn đã hỏi Xác thực HTTP (Tôi giả định xác thực cơ bản).
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
Nội dung hay, +1. Tôi cũng khuyên bạn nên thay đổi '[" CUSTOM_USERNAME "," SECRET_PASSWORD "]' thành '[ENV [" CUSTOM_USERNAME "], ENV [" SECRET_PASSWORD "]]' và tải chúng vào môi trường của máy chủ để mật khẩu không được chuyển trong mã và thông qua kiểm soát nguồn, vv – iain
Tôi thực sự đã thay đổi mã thành giá trị mã hóa cứng để làm cho nó đơn giản. Nó có ý nghĩa hơn để đề cập đến nó :). – ch4nd4n
Nhận xét của Vicky Chijwani là chính xác, bạn nên cung cấp nhiều thông tin hơn (lưu ý!) Nhưng đây là câu trả lời.
Bạn có thể thực hiện một số cách. Nếu chúng ta giả định phương pháp xác thực của bạn được gọi là 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
Hoặc bạn có thể sử dụng 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
Hoặc nếu bạn đang sử dụng Sinatra::Namespace
từ sinatra-contrib gem (có thể nhiều hơn một chút một cách sử dụng tiên tiến , nhưng tôi sử dụng điều này rất nhiều khi tôi thấy đó là cách hay để làm việc) và trang được bảo vệ hiện có tại "/ 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
Cách tốt nhất là sử dụng: https://rubygems.org/gems/sinatra-basic-auth Các tài liệu là rất tốt:
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 Nó thực sự đơn giản để sử dụng
- 1. Node.js http basic auth
- 2. Netbeans Basic Http Auth Jax-WS
- 3. kiểm tra HTTP Basic Auth trong Rails 2.2 +
- 4. nhóm nginx http auth
- 5. WSDL to PHP với Basic Auth
- 6. Hiển thị Thông báo Lỗi với Sinatra
- 7. ghi đè "/ auth/identity" -page của danh tính omniauth
- 8. Sinatra và http PUT
- 9. Wordpress All-In-One Lịch sự kiện: Chỉ hiển thị sự kiện sắp diễn ra
- 10. LWP :: UserAgent HTTP Basic Authentication
- 11. Ruby on Rails - hiển thị bố cục
- 12. Rails 3.1 và Http Page Caching
- 13. Chuyển hướng vĩnh viễn từ http đến https page
- 14. Objective-c xác thực HTTP Basic
- 15. Chỉ sử dụng HTTP Auth nếu truy cập vào một miền cụ thể
- 16. Hiển thị chỉ thị bên trong một chỉ thị khác (trong mẫu lặp)
- 17. http auth cơ bản với vert.x
- 18. NHibernate One-To-One
- 19. Sử dụng ajaxSetup beforeSend cho Basic Auth đang ngắt kết nối SignalR
- 20. Hiển thị Highcharts bằng Angular js Chỉ thị
- 21. Chỉ hiển thị thanh tiến trình wget?
- 22. Ký tự UTF-8 bị xáo trộn trong tên người dùng Auth HTTP cơ bản
- 23. Tìm hiểu về Ruby on Rails hiển thị số lần
- 24. Ruby on Rails: có điều kiện hiển thị một phần
- 25. Thoát bằng http basic authentication và plugin restful_authentication
- 26. d3 chỉ hiển thị ngày chủ nhật:
- 27. Tải trang web MVC 4 hiển thị Lỗi HTTP 500.19
- 28. luồng em-http với lệnh auth và gzip cơ bản
- 29. hỗ trợ Basic Auth và Form dựa trên Authenticaion trong Grails
- 30. one-to-one fluent nhibernate?
Câu hỏi của bạn không rõ ràng. Vui lòng [rõ ràng và thêm chi tiết và ngữ cảnh, như được đề cập trong Câu hỏi thường gặp] (http://stackoverflow.com/questions/how-to-ask) để những người dùng khác có thể giúp bạn hiệu quả. –