Я реализовал расширение, которое скрывает некоторые ресурсы набора данных и реализует пользовательскую функцию аутентификации для переопределения стандартной аутентификации для resource_show. Все отлично работает для вошедшего в систему пользователя, но без входа в систему ресурсы неправильно заблокированы. В моей функции after_show, которая скрывает ресурсы, которые пользователь не имеет права видеть (см. Ниже), есть вызов authz.is_authorized, который возвращает false с сообщением «Действие resource_show требует аутентифицированного пользователя». Я знаю, что декоратор @toolkit.auth_allow_anonymous_access
призван помочь в этой ситуации, но добавление его не решило мою проблему. Я также использую функции аутентификации в цепочке, может ли это быть частью проблемы?
после шоу из моего plugin.py
def after_show(self, context, data_dict):
resources = []
for resource_dict in data_dict['resources']:
auth = authz.is_authorized('resource_show', context, resource_dict)
if auth['success']:
resources.append(resource_dict)
data_dict['resources'] = resources
return data_dict
моей пользовательской функции аутентификации resource_show
@toolkit.chained_auth_function
@toolkit.auth_allow_anonymous_access
def resource_show(next_auth, context, data_dict):
base_auth = next_auth(context, data_dict)
if not base_auth['success']:
return base_auth
--- my code that never gets run ---