c# - 以编程方式验证 Umbraco 后台用户
问题描述
我是 umbraco 的新手,目前面临以下问题。
我需要使用用户输入的用户名和密码来验证 SurfaceController 中是否存在 umbraco 后台用户(umbracoUser 表中的用户),这就是我到目前为止所做的。
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
有关如何以编程方式验证后台用户是否存在的任何指导都会有很大帮助。
解决方案
我找到了一种通过以下代码成功验证后台用户的方法。
在 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;
}
}
以上验证后台用户是否存在返回true。
推荐阅读
- angular - ionic cordova build Android 显示 lint 警告
- jquery - 如何在没有destroy()的情况下重新初始化Datatable
- apache-camel - 组件不支持从此端点消费
- security - 安全过滤器链上缺少自定义过滤器
- r - 如何使用 r 中的传单向图例添加标签
- xml - XSD 1.0:如何以任意顺序验证 4 个元素,每个元素只出现一次,但至少其中一个元素必须只出现一次
- amazon-web-services - 我想使用 access_token 更新 currentAuthenticatedUser 和属性?
- r - 闪亮:uiOutput 与将反应值插入 selectInput
- java - 字符串与元素不匹配时如何抛出错误
- javascript - 在活动的 mysql 查询中调用数据库的名称