ServiceStack.netを使用しようとしているので、最初のサービスは、TryAuthenticateメソッドが現時点でTrueを返すカスタムCredentialsAuthProviderを実装しています。
私が抱えている問題は、クライアントが最初に電話をかける(そして成功する)ことです
var rc = new JsonServiceClient("http://localhost:1337/");
var ar = rc.Send<AuthResponse>(new Auth
{
provider = CredentialsAuthProvider.Name,
UserName = "user",
Password = "p@55word",
RememberMe = true
});
に続く:
var newJob = rc.Post<BladeJob>("/jobs", new BladeJob { Name = "TestJob" }); //todo.Id =
これは単に「Unauthorized」(例外)を返します。
サービスは非常に簡単です。
[Authenticate()]
public class BladesService : RestServiceBase<BladeJob>
{
public JobRepository Repository { get; set; }
public override object OnPut(BladeJob request)
{
return Repository.Store(request);
}
public override object OnPost(BladeJob job)
{
return Repository.Store(job);
}
public override object OnGet(BladeJob request)
{
IAuthSession session = this.GetSession();
if (request.JobID != default(ulong))
return Repository.GetByID(request.JobID);
return Repository.GetAll();
}
}
TryAuthenticateにブレークポイントを設定しましたが、問題なくヒットしました。何が間違っているのでしょうか。
ホスト構成全体はここにあります:
public override void Configure(Funq.Container container)
{
//Register Web Service dependencies
container.Register(new JobRepository());
//Register all Authentication methods you want to enable for this web app.
Plugins.Add(new AuthFeature(() => new AuthUserSession(),
new AuthProvider[] {
new CustomCredentialsAuthProvider() //HTML Form post of UserName/Password credentials
}
));
//Register user-defined REST-ful routes
Routes
.Add<BladeJob>("/jobs")
.Add<BladeJob>("/jobs/{JobID}");