Digest
对应头部字段及内容:
headers["WWW-Authenticate"] = %(Digest realm="#{realm}", qop="auth", algorithm=MD5,
nonce="#{nonce}", opaque="#{opaque}")
Controller 方法:
提供方法:
authenticate_with_http_digest
request_http_digest_authentication
authenticate_or_request_with_http_digest
使用举例:
require 'digest/md5'
class PostsController < ApplicationController
REALM = "SuperSecret"
USERS = {"dhh" => "secret",
# plain text password
# ha1 digest password
"dap" => Digest::MD5.hexdigest(["dap", REALM, "secret"].join(":"))}
before_action :authenticate, except: :index
def index
render plain: "Everyone can see me!"
end
def edit
render plain: "I'm only accessible if you know the password"
end
private
def authenticate
# 使用验证
authenticate_or_request_with_http_digest(REALM) do |username| # <- 这里
USERS[username]
end
end
end
authenticate_or_request_with_http_digest
简单的封装了其余两个方法。
从名字可知,如果提供的是普通文本则直接接受;如果提供的是 md5 加密,则先(自动)解密再接受。
其它方法:
authenticate
authentication_header
authentication_request
decode_credentials
decode_credentials_header
encode_credentials
expected_response
ha1
nonce
opaque
secret_token
validate_digest_response
validate_nonce
最后更新于