【发布时间】:2023-03-29 21:08:02
【问题描述】:
在 Sinatra Web 应用程序中允许多个用户的最简单方法是什么。我以前使用过一个允许一个用户名和密码的授权类,但是如果我想允许用户注册一个简单的 Web 应用程序并允许他们所有自己的登录凭据怎么办?
非常感谢!
【问题讨论】:
在 Sinatra Web 应用程序中允许多个用户的最简单方法是什么。我以前使用过一个允许一个用户名和密码的授权类,但是如果我想允许用户注册一个简单的 Web 应用程序并允许他们所有自己的登录凭据怎么办?
非常感谢!
【问题讨论】:
sinatra-authentication gem 看起来像是一个简单而强大的解决方案,用于向 sinatra 应用程序添加用户、身份验证和权限。
【讨论】:
如果 HTTP 基本身份验证就足够了,我建议定义如下两种方法:
helpers do
def protected!
unless authorized?
response["WWW-Authenticate"] = 'Basic realm="Protected Area"'
throw(:halt, [401, "Not authorized\n"])
end
end
def authorized?
@auth ||= Rack::Auth::Basic::Request.new(request.env)
if @auth.provided? && @auth.basic? && @auth.credentials
username,password = @auth.credentials
# verify credentials are correct
end
end
end
在任何应受保护的操作中调用protected!(或使用before 块来保护所有内容)。由于我不知道您如何存储用户帐户信息,因此我将凭据验证留给您。
【讨论】: