我是umbraco的新手,目前面临以下问题。
我需要使用用户输入的用户名和密码来验证SurfaceController内部是否存在umbraco后台用户(umbracoUser表中的用户),这是我到目前为止所做的。
var result = new Umbraco.Web.Security.Providers.UsersMembershipProvider().ValidateUser(username, password);
当我使用上述语句来验证现有的用户名和正确的密码时,它始终返回false并通过将DateTime值设置为lastLockoutDate列和umbracoUser表中的userNoConsole = 1
来锁定用户。
也浏览了以下帖子,但没有帮助。
https://our.umbraco.com/forum/umbraco-cloud/76499-umbraco-7-user-login-backoffice-programmatically
任何有关如何以编程方式验证后台用户存在的指南都将大有帮助。
答案 0 :(得分:0)
我找到了一种通过以下代码成功验证后台用户的方法。
在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" />
因此,我使用了成员资格提供者名称,并执行了以下操作来验证后台用户,
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;
}
}
以上内容验证了后台办公室用户是否存在(如果存在)。