Я разрабатываю службу WCF с некоторой аутентификацией.
Все пользователи будут равны, поэтому я планирую требовать сессий и иметь только метод, который инициирует сеанс и не завершает его.Упрощение:
[OperationContract(IsInitiating = true, IsTerminating = false)]
void Open(String user, String password);
Итак, если пароль неправильный (опять же, это упрощение), я бы выдвинул исключение, чтобы сеанс завершился.Таким образом, мне не нужно проверять учетные данные при каждом вызове метода.
Это хороший подход?Если нет, то почему?
Обновление: Мне нужно было написать это на скорую руку, поэтому я постараюсь немного прояснить вопрос и прояснить его.
Аутентификацияметод является требованием, и я не спрашиваю об этом.Я хочу знать об управлении сессиями.
Когда я использую [OperationContract (IsInitiating = true, IsTerminating = false)], сессия начинается.Мне не нужно хранить удостоверение личности или что-нибудь;WCF управляет всем.Когда возникает исключение или вызывается метод с IsTerminating = true, сеанс заканчивается, и последующие вызовы методов службы завершаются неудачно, пока не будет инициирован новый сеанс.
Что я хочу знать, так это разумно ли этозлоумышленнику легко обойти материал управления сеансами WCF, создав его самостоятельно без вызова Open, единственного метода моего сервиса с IsInitiating = true и IsTerminating = false, поэтому единственный способ законно начать сеанс.