Проверять пользователей Umbraco Back Office программно

Я новичок в umbraco и в настоящее время столкнулся с проблемой ниже.

У меня есть требование проверить существование пользователей бэк-офиса umbraco (пользователей в таблице umbracoUser) внутри SurfaceController, используя введенные пользователем имя пользователя и пароль, и это то, что я делал до сих пор.

var result = new Umbraco.Web.Security.Providers.UsersMembershipProvider().ValidateUser(username, password);

Когда я использовал приведенный выше оператор для проверки с использованием существующего имени пользователя и правильного пароля, он всегда возвращает false и блокирует пользователя, устанавливая значение DateTime в столбец lastLockoutDate и userNoConsole = 1 в таблице umbracoUser.

Посмотрел и ниже пост, но это не помогло.

https://our.umbraco.com/forum/umbraco-cloud/76499-umbraco-7-user-login-backoffice-programmatically

Любое руководство о том, как программно проверить существование пользователей бэк-офиса, было бы большой помощью.

Ценю твою помощь.

Благодарю.

1 ответ

Я нашел способ успешно проверить пользователей бэк-офиса с помощью приведенного ниже кода.

В файле Web.config я нашел информацию о поставщике членства в бэк-офисе.

<add name="UsersMembershipProvider"
             type="Umbraco.Web.Security.Providers.UsersMembershipProvider, Umbraco" 
             minRequiredNonalphanumericCharacters="0" 
             minRequiredPasswordLength="10" 
             useLegacyEncoding="false" 
             enablePasswordRetrieval="false" 
             enablePasswordReset="true" 
             requiresQuestionAndAnswer="false" 
             passwordFormat="Hashed" 
             allowManuallyChangingPassword="false" />

Итак, я использовал имя провайдеров членства и сделал следующее для проверки пользователей backoffice,

public bool ValidateUser(string username, string password)
        {
            try
            {

                var provider = Membership.Providers["UsersMembershipProvider"];     // from web.config 

                if (provider != null)
                {                                           
                    var validUser = provider.ValidateUser(username, password)
                        ? Task.FromResult(BackOfficeUserPasswordCheckerResult.ValidCredentials)
                        : Task.FromResult(BackOfficeUserPasswordCheckerResult.InvalidCredentials);
                    return validUser.Result == BackOfficeUserPasswordCheckerResult.ValidCredentials;
                }
                return false;
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }

Вышеуказанное проверяет, что пользователи backoffice возвращают true, если они существуют.

Другие вопросы по тегам