SecurityAgentPlugin 不再在 Yosemite 上工作 (SFAuthorizationPluginView)

2024-03-10

我们开发了一个授权插件,它使用 SFAuthorizationPluginView 向用户呈现 UI。这个例子是基于“旧”的名称和密码示例 https://developer.apple.com/library/mac/samplecode/NameAndPassword/Introduction/Intro.html#//apple_ref/doc/uid/DTS10004022-Intro-DontLinkElementID_2由苹果公司提供。

我们正在使用此授权插件使用自定义视图来解锁会话(我们已更新了authorizationdb中的“system.login.screensaver”授权)。在优胜美地的最后一次更新之前,这种方法一直运行良好。从 Yosemite 开始,SFAuthorizationPluginView 在用户登录会话后不再关闭。我们可以更新示例以强制关闭窗口,方法如下:

// confirm that we have authorized the user
[self callbacks]->SetResult ([self engineRef], kAuthorizationResultAllow);

// close the window
NSView* v = [self viewForType:SFViewTypeCredentials]; 
NSWindow* w = [v window]; 
[w close];

现在,一旦用户登录(在我们授权用户之后),SFAuthorizationPluginView 就会很好地关闭,但某些内容在后台保持活动状态,并且用户在会话中没有焦点(用户无法选择某些内容或在文本编辑中写入内容)例子)。我们必须手动终止 SecurityAgent 才能再次获得焦点。 (请注意,系统似乎会在 30 秒后自动终止 SecurityAgent)。

我们在下页找到了 Apple NameAndPassword auth 插件示例的修复 2014 版本,但我们在 Yosemite 上面临同样的问题:Apple NameAndPassword auth 插件示例的修复 2014 版本 https://github.com/skycocker/NameAndPassword

在 Yosemite 发布之前,这段代码对我们来说运行良好。

有人尝试过类似的问题吗?有什么想法或建议来解决这个问题吗?


您应该覆盖 didDeactivate 方法并添加调用,而不是靠近窗口:

[self didDeactivate];

在将结果设置为 ALLOW 之后,在 SFAuthorizationPluginView 类中。

苹果更新了他们的文档,你可以重新阅读它,有一些很好的指南可以在一年前为我节省很多时间和精力。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SecurityAgentPlugin 不再在 Yosemite 上工作 (SFAuthorizationPluginView) 的相关文章

随机推荐