0
我在我的WCF服务中覆盖UserNamePasswordValidator,我想验证用户名和密码对SQL数据库。无论如何要将连接字符串传递到PasswordValidator类中吗?我还应该提到我的课程与主要的WCF服务是分开的。如何在重写时传递连接字符串UserNamePasswordValidator
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"/>
感谢。
我应该提到MyCustomUserNameValidator是在一个单独的dll中o主要的WCF服务。如果有一种方法可以调用主web.config,我会很满意,但如果设置与主Web配置不匹配,则有第二个配置文件会导致其他开发人员感到困惑和沮丧。 – user1662409 2013-05-09 10:57:21
你可以使用配置为'var config = ConfigurationManager.OpenExeConfiguration(“MyDll.dll.config”);' – Veer 2013-05-09 11:03:18
或 只需将一个app.config文件添加到DLL项目中,并确保从配置设置中读取配置在DLL里面。部署时,您的配置文件需要具有名称“MyDLL.dll.config”(假设您的DLL被命名为“MyDLL.dll”)并且与DLL位于同一文件夹中。 以下代码应该从我的dll返回我的connectionstring: 'return ConfigurationManager.AppSettings [“DbConnection”];' – Veer 2013-05-09 11:05:46