SecurityAgentPlugin больше не работает на Yosemite (SFAuthorizationPluginView)

Мы разработали плагин авторизации, который использует SFAuthorizationPluginView для представления пользовательского интерфейса. Этот пример основан на "старом" примере NameAndPassword, предоставленном Apple.

Мы используем этот плагин авторизации, чтобы разблокировать сеанс (мы обновили авторизацию "system.login.screensaver" в authorizationdb) с помощью пользовательского представления. Это работало хорошо до последнего обновления в Yosemite. Начиная с 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, чтобы снова получить фокус. (обратите внимание, что система, кажется, автоматически убивает SecurityAgent через 30 секунд).

На следующей странице мы обнаружили исправленную версию 2014 года образца подключаемого модуля для проверки подлинности Apple NameAndPassword, но мы столкнулись с той же проблемой в Yosemite: исправленная версия 2014 года образца подключаемого модуля для проверки подлинности Apple NameAndPassword

Этот код работал хорошо для нас до выпуска Yosemite.

Кто-нибудь экспериментирует с подобной проблемой? Любая идея или совет, чтобы решить эту проблему?

1 ответ

Решение

Вместо того, чтобы закрывать окно, вы должны переписать метод didDeactivate и добавить вызов:

[self didDeactivate];

в классе SFAuthorizationPluginView ПОСЛЕ того, как вы установите для результата значение ALLOW.

Apple обновила свою документацию, вы можете перечитать ее, есть несколько хороших рекомендаций, которые сэкономили бы мне много времени и усилий год назад.

Другие вопросы по тегам