类:Mongo::Auth::ConversationBase Private

继承:
对象
  • 对象
显示全部
定义于:
lib/ Mongo/auth/conversation_base.rb

Overview

此类是私有 API 的一部分。 应尽可能避免使用此类,因为它将来可能会被删除或更改。

定义客户端和服务器之间身份验证对话的常见行为。

由于:

  • 2.0.0

实例属性摘要折叠

实例方法摘要折叠

构造函数详情

#initialize(user, connection, **_opts) ⇒ ConversationBase

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

创建新对话。

参数:

  • user ( Auth::User )

    要进行身份验证的用户。

  • 连接 ( Mongo::Connection )

    要进行身份验证的连接。

由于:

  • 2.0.0



29
30
31
32
# File 'lib/ Mongo/auth/conversation_base.rb', line 29

def 初始化(user, 连接, **_opts)
  @user = user
  @connection = 连接
end

实例属性详细信息

# connectionMongo::Connection (readonly)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回 要进行身份验证的连接。

返回:

  • ( Mongo::Connection )

    要进行身份验证的连接。

由于:

  • 2.0.0



38
39
40
# File 'lib/ Mongo/auth/conversation_base.rb', line 38

def 连接
  @connection
end

# userAuth::User (readonly)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回 user 对话的用户。

返回:

由于:

  • 2.0.0



35
36
37
# File 'lib/ Mongo/auth/conversation_base.rb', line 35

def user
  @user
end

实例方法详细信息

#build_message(connection, auth_source, selector) ⇒ Protocol::Message

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回 要发送的消息。

返回:

由于:

  • 2.0.0



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/ Mongo/auth/conversation_base.rb', line 52

def build_message(连接, auth_source, 选择器)
  if 连接
    选择器 = 选择器.dup
    选择器[protocol::消息::DATABASE_IDENTIFIER] = auth_source
    cluster_time = 连接.mongos? && 连接.cluster_time
    选择器[操作::CLUSTER_TIME] = cluster_time if cluster_time
    protocol::消息.new([], {}, 选择器)
  else
    protocol::查询.new(
      auth_source,
      Database::命令,
      选择器,
      limit: -1
    )
  end
end

# speculative_auth_document哈希 | nil

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回要在握手中作为 speculativeAuthenticate 键的值提供给服务器的哈希值。

如果身份验证机制不支持推测性身份验证,则此方法返回 nil。

返回:

  • ( Hash | nil )

    推测性身份验证文档。

由于:

  • 2.0.0



47
48
49
# File 'lib/ Mongo/auth/conversation_base.rb', line 47

def speculative_auth_document
  nil
end

# validate_external_auth_source对象

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

引发:

由于:

  • 2.0.0



69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/ Mongo/auth/conversation_base.rb', line 69

def validate_external_auth_source
  return 除非 user.auth_source != ' $external '

  user_name_msg = if user.名称
                    " #{ user .名称} "
                  else
                    ' '
                  end
  机制 = user.机制
  提高 auth::InvalidConfiguration,
        " 用户 #{ user_name_msg } 指定了身份验证源 ' #{ user . auth_source } ',但 #{ 机制 } 的唯一有效身份验证源 是 '$external' "
end