我可以使用错误的密码登录dnn网站。当我在输入错误密码后单击登录按钮时,它会给我正确的验证消息。但是,我已登录,因为如果我刷新或浏览网站页面,我可以访问,并且可以看到我的屏幕名称。
我正在使用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"/>
这里有任何帮助。我检查了下面提到的链接,它有相同的核心问题,但没有得到任何解决方案的建议。
Programmatically login in dotnetnuke
任何建议或帮助都会受到很多赞赏。
谢谢, 萨姆
答案 0 :(得分: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);