Авторизация и ASP.NET кэширование MVC

Учитывая Ваше отредактированное описание проблемы, я предложил бы использовать COALESCE() вместо того громоздкого CASE выражение:

SELECT FullName
FROM (
  SELECT COALESCE(LastName+', '+FirstName, FirstName) AS FullName
  FROM customers
) c
GROUP BY FullName;
6
задан Spooky 7 December 2014 в 23:22
поделиться

1 ответ

Есть два отдельных вопроса:

  1. Работает ли аутентификация с кэшированием в MVC?
  2. Работает ли сеанс перед аутентификацией с использованием кеша (даже для неаутентифицированных пользователей, у которых еще есть надеюсь, уникальный сеанс)?

Ответы, соответственно, да и нет. Аутентификация отлично работает с кешированием. Попробуйте это с поставщиками SQL или членства в домене; вы увидите.

Однако кэширование может выполняться до модуля аутентификации. (Для бонусных баллов: почему?) Аутентификация вызывается только в том случае, если она специально перехватывает кеш (как это делает AuthorizeAttribute). Поскольку сеансы зависят от пользователя, нет гарантии, что у вас будет сеанс внутри AuthorizeCore.

Дополнительные бонусные баллы: как это может измениться, если вы указали variableByUser в конфигурации кеша?

К сожалению, выполнить правильную аутентификацию сложно, потому что сложно выполнить какие-либо права безопасности. Microsoft пытается упростить эту задачу с помощью API поставщика членства. Я настоятельно рекомендую использовать при реализации пользовательской аутентификации. Я также рекомендую использовать встроенные поставщики и расширять их, а не переписывать, когда это возможно.

Еще один момент: поставщик сеанса ASP.NET и поставщик членства в ASP.NET полностью разделены. Разные пользователи-участники могут совместно использовать (!) Сеанс, и, да , вы можете атаковать сайт таким образом. никогда никогда не безопасно помещать в сеанс информацию, связанную с безопасностью. Безопасность - это сложно.

Microsoft пытается упростить эту задачу с помощью API поставщика членства. Я настоятельно рекомендую использовать при реализации пользовательской аутентификации. Я также рекомендую использовать встроенные поставщики и расширять их, а не переписывать, когда это возможно.

Еще один момент: провайдер сеанса ASP.NET и провайдер членства в ASP.NET полностью разделены. Разные пользователи-участники могут совместно использовать (!) Сеанс, и, да , вы можете атаковать сайт таким образом. никогда никогда не безопасно помещать в сеанс информацию, связанную с безопасностью. Безопасность - это сложно.

Microsoft пытается упростить эту задачу с помощью API поставщика членства. Я настоятельно рекомендую использовать при реализации пользовательской аутентификации. Я также рекомендую использовать встроенные поставщики и расширять их, а не переписывать, когда это возможно.

Еще один момент: поставщик сеанса ASP.NET и поставщик членства в ASP.NET полностью разделены. Разные пользователи-участники могут совместно использовать (!) Сеанс, и, да , вы можете атаковать сайт таким образом. никогда никогда не безопасно помещать информацию, связанную с безопасностью, в сеанс. Безопасность - это сложно.

Еще один момент: провайдер сеанса ASP.NET и провайдер членства в ASP.NET полностью разделены. Разные участники могут совместно использовать (!) Сеанс, и, да , вы можете атаковать сайт таким образом. никогда никогда не безопасно помещать информацию, связанную с безопасностью, в сеанс. Безопасность - это сложно.

Еще один момент: поставщик сеанса ASP.NET и поставщик членства в ASP.NET полностью разделены. Разные участники могут совместно использовать (!) Сеанс, и, да , вы можете атаковать сайт таким образом. никогда никогда не безопасно помещать в сеанс информацию, связанную с безопасностью. Безопасность - это сложно.

12
ответ дан 9 December 2019 в 20:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: