Membership.ValidateUser在IIS上总是返回false

 2023-02-16    393  

问题描述

成员资格.validateUser方法在开发服务器上工作(IIS Express和Cassini).
但在我的IIS上(它发布为我的开发机器的应用程序)它总是返回 false .

甚至用户是批准的,没有锁定,用户名和密码是正确的.没有跟踪错误. ?

Membership.ValidateUser在IIS上总是返回false

结果1:
true

结果2: false

这里是我的设置

<roleManager enabled="true" defaultProvider="MySQLRoleProvider"/>

<machineKey validationKey="E8B40EEA5A8EFC6F...key" decryptionKey="385..." validation="SHA1" />

<membership defaultProvider="MySQLMembershipProvider"  hashAlgorithmType="SHA1">
  <providers>
    <remove name="MySQLMembershipProvider"  />
    <add type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, Version=6.5.5.0, Culture=neutral, 
         PublicKeyToken=c5687fc88969c44d"
         name="MySQLMembershipProvider"
         connectionStringName="LocalMySqlServer"
         minRequiredPasswordLength="3"
         minRequiredNonalphanumericCharacters="0"
         requiresUniqueEmail="false"
         requiresQuestionAndAnswer="false"
         passwordFormat="Encrypted"/>

我比较了机器.Config是相同的框架64和框架.

它在开发服务器上工作,但在IIS上始终返回false.我可以查询不同的服务与IIS,没有这样的问题.

另外:
当我输入错误的密码时”faily passwordattempt.cn增加对于开发服务器.
但它 IIS 不会改变. IIS出了什么问题.我只是打电话给成员.validateUsuser(用户,通过)

任何建议都将得到理解!

推荐答案

解决了!希望这将挽救某人的时间.

问题是应用程序名称.

主机:端口/服务

主机/ bpm /service

注意:BPM是您在IIS上给它的应用程序名称.

隶属隶属算法使用”Applicatonname”.当我设置应用程序时,我将BPM用作应用程序名称.在开发服务器上,”名称”返回”/”.但它在IIS上的”BPM”!

所有旧密码都是用”/”Appliach的名称生成.所以始终提供应用程序名称.阅读此来自Scott-Gu的博客的文章.

public bool Login(string userName,string password)
    {
        var provider = Membership.Provider;
        string name = provider.ApplicationName;

        return Membership.ValidateUser(userName, password);
    }

//错误一个

<membership>
        <providers>
            <clear/>
            <add name="AspNetSqlMembershipProvider"
                type="System...bla bla"
                connectionStringName="LocalSqlServer"
                enablePasswordRetrieval="false"
                enablePasswordReset="true"
                requiresQuestionAndAnswer="true"
                requiresUniqueEmail="false"
                passwordFormat="Hashed"
                maxInvalidPasswordAttempts="5"
                minRequiredPasswordLength="7"
                minRequiredNonalphanumericCharacters="1"
                passwordAttemptWindow="10"
                passwordStrengthRegularExpression=""
                applicationName="/" //Wrong
            />
         </providers>
    </membership>

//右一个

<membership>
                <providers>
                <clear/>
            <add name="AspNetSqlMembershipProvider"
                type="System.Web.Security.S.. bla bla"
                connectionStringName="LocalSqlServer"
                enablePasswordRetrieval="false"
                enablePasswordReset="true"
                requiresQuestionAndAnswer="true"
                requiresUniqueEmail="false"
                passwordFormat="Hashed"
                maxInvalidPasswordAttempts="5"
                minRequiredPasswordLength="7"
                minRequiredNonalphanumericCharacters="1"
                passwordAttemptWindow="10"
                passwordStrengthRegularExpression=""
                applicationName="MyAPPNAME" //Well :)
            />
         </providers>
    </membership>

其他推荐答案

我也面临这个问题,我无法修复它两周.

使用CreateUser():

重点创建成员:

MembershipCreateStatus createStatus;
MembershipUser member = 
Membership.CreateUser(TextBox_username.Text.Replace("'", "''"), 
           TextBox_password.Text.Replace("'", "''"), 
           TextBox_email.Text.Replace("'", "''"), null, null, true, out createStatus);

检查如何调用CreateUser()函数.它应该是这样的.

以上所述是小编给大家介绍的Membership.ValidateUser在IIS上总是返回false,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/33995.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。