2014-11-12 2 views
0

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

Я использую DNN версии 7.1.2

На кнопку Войти мыши, я использую ниже C# код:

var user = UserController.UserLogin(
      portalId, userName, password, string.Empty, 
      portalName, ipAddress, ref loginStatus, checked); 

значения для каждого:

portId = 0 
ipAddress = ::1 
var loginStatus = UserLoginStatus.LOGIN_FAILURE; 
var checked = false; 

Ниже приводится конфигурация для членства.

<add name="AspNetSqlMembershipProvider" 
      type="System.Web.Security.SqlMembershipProvider" 
      connectionStringName="SiteSqlServer" 
      enablePasswordRetrieval="false" 
      enablePasswordReset="true" 
      requiresQuestionAndAnswer="false" 
      minRequiredPasswordLength="7" 
      minRequiredNonalphanumericCharacters="0" 
      requiresUniqueEmail="false" 
      passwordFormat="Hashed" 
      applicationName="DotNetNuke" 
      description="Stores and retrieves membership data from the local Microsoft SQL Server database"/> 

Любая помощь здесь. Я проверил ссылку, упомянутую ниже, которая имеет одинаковую проблему, но havent получил какое-либо решение из предложения.

Programmatically login in dotnetnuke

Любые предложения или помощь будет оценили много.

Спасибо, Sam

ответ

1

Это то, что я делаю в моей проверки подлинности:

var loginStatus = UserLoginStatus.LOGIN_FAILURE; 
UserInfo user = UserController.ValidateUser(portalId, userName, password, string.Empty, string.Empty, Request.UserHostAddress.ToString(), ref loginStatus); 

bool authenticated = (loginStatus == UserLoginStatus.LOGIN_SUCCESS || loginStatus == UserLoginStatus.LOGIN_SUPERUSER); 
var eventArgs = new UserAuthenticatedEventArgs(user, user.Username, loginStatus, "DNN"); 
eventArgs.Authenticated = authenticated; 
OnUserAuthenticated(eventArgs); 
+0

Да. Я понял почти такой же подход. Я вызвал метод UserController.ValidateUser в соответствии с вашим предложением. Основываясь на loginStatus, я вызываю UserController.UserLogin. :) Seemd работает нормально. – sam113

+0

Сэм, приятно слышать. Этот код был снят с поставщика аутентификации, поэтому я использую событие OnUserAuthentication из AuthenticationLoginBase. Я должен был это разъяснить. – DotNetNuclear

Смежные вопросы