Проверять пользователей 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, если они существуют.