Плохая новость заключается в том, что кажется, что plot_surface()
просто игнорирует маски. Фактически существует открытый вопрос об этом .
Однако здесь они указывают на обходное решение, что, хотя оно далеко не идеально, оно может позволить вам получить некоторые приемлемые результаты. Основная проблема заключается в том, что значения NaN
не будут отображаться, поэтому вам нужно «замаскировать» значения, которые вы не хотите отображать, как np.nan
.
Ваш примерный код станет чем-то вроде this:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
Z = np.array([
[ 1, 1, 1, 1, 1, ],
[ 1, 1, 1, 1, 1, ],
[ 1, 1, 1, 1, 1, ],
[ 1, 1, 1, 1, 1, ],
[ 1, 1, 1, 1, 1, ],
])
x, y = Z.shape
xs = np.arange(x)
ys = np.arange(y)
X, Y = np.meshgrid(xs, ys)
R = np.where(X>=Y, Z, np.nan)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, R, rstride=1, linewidth=0)
fig.show()
* Мне пришлось добавить аргумент rstride=1
к вызову plot_surface
; в противном случае я получаю ошибку сегментации ... o_O
И вот результат:
[/g2]
Проверка токена состоит из серии шагов, и если какой-либо из них завершится неудачно, запрос должен быть отклонен. Вот список всех проверок, которые должен выполнить ваш API:
• Проверьте, правильно ли сформирован JWT
• Проверьте подпись
• Подтвердите стандартные утверждения [117 ]
• Проверьте разрешения приложения (области действия)
Для реализации пользовательской проверки вам необходимо выполнить следующее:
1) Разобрать Jwt
Чтобы выполнить разбор JWT вы можете либо вручную выполнить все проверки, как описано в спецификации RFC 7519> 7.2 Проверка JWT, либо использовать одну из библиотек, перечисленных в разделе «Библиотеки для подписи / проверки токенов» в JWT.io.
Например, если ваш API реализован с Node.js и вы хотите использовать библиотеку node-jsonwebtoken, то вы бы вызвали метод jwt.verify (). Если синтаксический анализ завершится неудачно, библиотека вернет ошибку JsonWebTokenError с сообщением jwt неверно сформировано.
2) Проверка алгоритма подписи
API должен проверить, соответствует ли алгоритм, указанный в заголовке JWT (свойство alg), ожидаемому API. Если нет, токен считается недействительным, и запрос должен быть отклонен.
Чтобы проверить, соответствует ли подпись ожиданиям API, необходимо декодировать JWT и извлечь свойство alg заголовка JWT.
В качестве альтернативы, вы можете использовать одну из библиотек, перечисленных в разделе «Библиотеки для подписи / проверки токенов» JWT.io .
3) Проверка утверждений
Как только API проверяет подпись токена, следующим шагом является проверка стандартных утверждений полезной нагрузки токена. Необходимо выполнить следующие проверки:
• Истечение срока действия токена: текущая дата / время должны предшествовать дате / времени истечения срока, указанному в заявке на получение опыта (которая является меткой времени Unix). Если нет, запрос должен быть отклонен.
• Эмитент токена: заявка «Iss» обозначает эмитента JWT. Значение должно соответствовать значению, настроенному в вашем API. Для JWT, выпущенных Auth0, iss содержит ваш домен Auth0 с префиксом https: // и суффиксом /: https: // YOUR_DOMAIN / . Если вы используете функцию пользовательских доменов, вместо этого значение будет иметь следующий формат: https: ///.
• Аудитория токенов: утверждение Audit идентифицирует получателей, для которых предназначен JWT. Для JWT, выпущенных Auth0, Audholds содержит уникальный идентификатор целевого API (поле «Идентификатор» в настройках вашего API). Если API не является целевой аудиторией JWT, он должен отклонить запрос.
Вот библиотека JWT для JAVA, где вы можете использовать метод проверки (токен) для проверки.