我想從ServerEventsClient訪問我的自定義AuthProvider(它從繼承自BasicAuthProvider)。 提供商的代碼是非常簡單的ATM消費自定義服務堆AuthProvider
public class RoomsAuthProvider : BasicAuthProvider
{
public RoomsAuthProvider(AppSettings appSettings) : base(appSettings)
{
}
public RoomsAuthProvider()
{
}
public override bool TryAuthenticate(IServiceBase authService,
string userName, string password)
{
return true;
}
public override IHttpResult OnAuthenticated(IServiceBase authService,
IAuthSession session, IAuthTokens tokens,
Dictionary<string, string> authInfo)
{
session.FirstName = "some_firstname_from_db";
return base.OnAuthenticated(authService, session, tokens, authInfo);
}
}
我註冊它像往常一樣:
public override void Configure(Funq.Container container)
{
container.Register<ICacheClient>(new MemoryCacheClient());
Plugins.Add(new AuthFeature(() => new AuthUserSession(),
new IAuthProvider[]
{
new RoomsAuthProvider()
}));
Plugins.Add(new ServerEventsFeature());
}
和我的客戶是:
var client = new ServerEventsClient("http://localhost:1337/", "home")
嘗試驗證:
var authResponse = client.Authenticate(new Authenticate
{
provider = "RoomsAuthProvider",
UserName = "[email protected]",
Password = "[email protected]",
RememberMe = true,
});
I總是得到NotFound錯誤,並且rror聲明沒有爲此AuthProvider設置配置。在提供程序中設置Name和Realm沒有幫助。有這種類型的客戶端的另一個身份驗證流程或我錯過了什麼嗎?歡迎任何想法
我已經改變了基類CredentialsAuthProvider,重寫名市民新的靜態字符串名稱=「RoomsAuth」;但它沒有工作 – HardLuck
UPD:將提供者名稱更改爲可以工作的憑證 – HardLuck
@HardLuck這是因爲靜態Name屬性本身沒有做任何事情,您需要改變實例'Provider'屬性 - 但是我' d保持原樣,因爲它仍然代表「憑據」身份驗證提供程序。 – mythz