类
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_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 继承的信号(1)
GObject::notify
当对象的属性通过 g_object_set_property()、g_object_set() 等等方式设置其值时,发出 notify 信号。