Как обойти метод Validate в UserNamepasswordvalidator после аутентификации
Я использую класс Customvalidator, унаследованный от UserNamepasswordvalidator. Проблема в том, что он вызывается при каждом запросе. Я хочу обойти это, как только пользователь аутентифицирован
любая помощь будет оценена
1 ответ
Там нет никакого способа, чтобы пропустить валидатор, пользовательский, имя пользователя / пароль или сертификат на основе. Он на самом деле вызывается до того, как запрос попадает в вашу основную функцию, поэтому нет способа обойти его, используя сеанс или переменную.
И это действительно смысл отделять аутентификацию от обработки сообщений... это позволяет вам отклонять поддельные запросы на самой ранней стадии процесса запрос / ответ, чтобы ваша программа не теряла циклов, отбрасывая атаки зомби и тому подобное.
Конечно, вы можете не применять аутентификацию заранее при обработке вашего сообщения и аутентифицироваться при поступлении запроса (не раньше, как в предыдущей модели). На этом этапе вы можете создать сеанс программным путем и продолжить с этого момента... но вы будете обрабатывать каждое полученное сообщение.
Я добавлю это, однако. Если вы думаете, что если вы используете что-то вроде NetTCPBinding или NetNamedPipesBinding, вы можете создать постоянный сеанс между клиентом и хостом, таким образом аутентифицируясь только один раз.