如何在覆盖UserNamePasswordValidator时传递连接字符串

本文关键字:连接 字符串 UserNamePasswordValidator 覆盖 | 更新日期: 2023-09-27 18:12:54

我在WCF服务中重写UserNamePasswordValidator,我想对SQL数据库验证用户名和密码。是否有任何方式将连接字符串传递到PasswordValidator类?我还应该提到,我的类是在一个独立的主WCF服务。

public class MyCustomUserNameValidator : UserNamePasswordValidator
{
    public override void Validate(string userName, string password)
    {
        //TODO: how to pass in connection string??
        connectionString = "Data Source=MyDataSource;Initial Catalog=MyCatalog;User ID=MyUserName;Password=MyPassword";
        // connect to database and validate crendentials...
        if (!valid)
        {
            throw new SecurityTokenException("Access Denied.");
        }
    }
}

配置部分:

<userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="MyCompany.Services.Validation.MyCustomUserNameValidator, MyCompany.Services.Validation"/>

谢谢。

如何在覆盖UserNamePasswordValidator时传递连接字符串

您可以将connectionString存储在<appsettings>中的配置文件

<addkey="DbConnection" value ="Your Connection String"/>

MyCustomUserNameValidator中使用类

ConnectionString = ConfigurationSettings.WebConfig["DbConnection"].ToString();

*编辑: ConfigurationManager does actually read from the web.config. the exact solution was: ConfigurationManager.AppSettings["ConnectionString"]是答案