Вот как я делаю это в кувшине (git HEAD во время этого ответа):
e = some_array_object
M = hashlib.md5()
M.update('np.ndarray')
M.update(pickle.dumps(e.dtype))
M.update(pickle.dumps(e.shape))
try:
buffer = e.data
M.update(buffer)
except:
M.update(e.copy().data)
Причина в том, что e.data
доступен только для некоторых массивов. (смежные массивы). То же самое с a.view(np.uint8)
(который завершается ошибкой неописательного типа, если массив не является смежным).
HttpServletRequest # getUserPrincipal ()
, как указано в другом ответе, применяется только тогда, когда вы используете Java EE, обеспечивающую безопасность, управляемую контейнером, как описано здесь ].
Если вы, тем не менее, создаете собственную безопасность, вам нужно положиться на HttpSession
. Это не так сложно, вот обзор того, что вам нужно реализовать на каждом этапе:
При входе в систему получите пользователя
из БД и сохраните его в сеансе в сервлете doPost ()
:
User user = userDAO.find(username, password);
if (user != null) {
session.setAttribute("user", user);
} else {
// Show error like "Login failed, unknown user, try again.".
}
При выходе просто аннулируйте сеанс в сервлете doPost ()
. Это уничтожит сеанс и очистит все атрибуты.
session.invalidate();
Чтобы проверить, вошел ли Пользователь
в систему или нет, создайте фильтр , который сопоставлен с шаблоном URL
, который охватывает запрещенные страницы, например / secured / *
, / protected / *
и т. д. и реализовать doFilter ()
, как показано ниже:
if (session.getAttribute("user") == null) {
response.sendRedirect(request.getContectPath() + "/login"); // Not logged in, redirect to login page.
} else {
chain.doFilter(request, response); // Logged in, just continue chain.
}
Это в основном все.