sku*_*lpa 5 security macos sfauthorizationpluginview objective-c osx-yosemite
我们已经开发了一个授权插件,该插件使用SFAuthorizationPluginView将UI呈现给用户。此示例基于Apple提供的“旧” NameAndPassword示例。
我们正在使用此授权插件通过自定义视图来解锁会话(我们已经在authorizationdb中更新了“ system.login.screensaver”授权)。在优胜美地的最新更新之前,此方法一直有效。从优胜美地开始,用户登录会话后,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版本,但是在优胜美地我们也面临同样的问题: 固定的2014版本的Apple的NameAndPassword身份验证插件示例
在优胜美地发布之前,这段代码对我们来说一直很好。
有人尝试类似的问题吗?有任何解决此问题的想法或建议吗?
您应该覆盖 didDeactivate 方法并添加调用,而不是靠近窗口:
[self didDeactivate]; 
在将结果设置为 ALLOW 之后,在 SFAuthorizationPluginView 类中。
苹果更新了他们的文档,你可以重新阅读它,有一些很好的指南可以在一年前为我节省大量时间和精力。
| 归档时间: | 
 | 
| 查看次数: | 1237 次 | 
| 最近记录: |