GioDBusAuthObserver

since: 2.26

描述 [src]

final class Gio.DBusAuthObserver : GObject.Object
{
  /* No available fields */
}

GDBusAuthObserver 提供了一种机制,用于参与 GDBusServer(或 GDBusConnection)如何验证远程对等体。

只需实例化一个 GDBusAuthObserver 并连接到您感兴趣信号。注意,未来可能会添加新的信号。

控制认证机制

默认情况下,GDBusServer 或服务器端 GDBusConnection 将允许使用任何认证机制。如果您只想允许使用 EXTERNAL 机制(它利用凭证传递,是现代 Unix 平台如 Linux 和 BSD 家族的推荐机制),您可以使用类似以下的信号处理器

static gboolean
on_allow_mechanism (GDBusAuthObserver *observer,
                    const gchar       *mechanism,
                    gpointer           user_data)
{
  if (g_strcmp0 (mechanism, "EXTERNAL") == 0)
    {
      return TRUE;
    }

  return FALSE;
}

控制授权

默认情况下,GDBusServer 或服务器端 GDBusConnection 将接受从任何成功认证的用户(但不使用 ANONYMOUS 机制的匿名连接)连接。如果您只想允许来自与服务器相同 uid 的进程的 D-Bus 连接(从 GLib 2.68 开始),您应该使用 G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER 标志。它与以下的信号处理器等价

static gboolean
on_authorize_authenticated_peer (GDBusAuthObserver *observer,
                                 GIOStream         *stream,
                                 GCredentials      *credentials,
                                 gpointer           user_data)
{
  gboolean authorized;

  authorized = FALSE;
  if (credentials != NULL)
    {
      GCredentials *own_credentials;
      own_credentials = g_credentials_new ();
      if (g_credentials_is_same_user (credentials, own_credentials, NULL))
        authorized = TRUE;
      g_object_unref (own_credentials);
    }

  return authorized;
}

Available since: 2.26

祖先

构造函数

g_dbus_auth_observer_new

创建一个新的 GDBusAuthObserver 对象。

since: 2.26

实例方法

g_dbus_auth_observer_allow_mechanism

observer 上发出 GDBusAuthObserver::allow-mechanism 信号。

since: 2.34

g_dbus_auth_observer_authorize_authenticated_peer

observer 上发出 GDBusAuthObserver::authorize-authenticated-peer 信号。

since: 2.26

GObject 继承的方法(43)

请参阅 GObject 以获取方法的完整列表。

信号

Gio.DBusAuthObserver::allow-mechanism

用于检查 mechanism 是否允许使用。

since: 2.34

Gio.DBusAuthObserver::authorize-authenticated-peer

用于检查成功认证的对等体是否被授权。

since: 2.26

GObject 继承的信号(1)
GObject::notify

当对象的属性通过 g_object_set_property()、g_object_set() 等等方式设置其值时,发出 notify 信号。