独自の認証を作成しようとしているので、Authenticate メソッドを継承CredentialsAuthProvider
してオーバーライドしました。認証は正常に機能しています。別のサービスを呼び出すと、セッションに保存したすべてのデータが表示されます。
問題は次のとおりです。認証属性を追加してクライアントから呼び出そうとすると、要求された役割を使用したい場合でも、承認されていない例外がスローされます。
認証サービスは次のとおりです。
public class CustomCredentialsAuthProvider : CredentialsAuthProvider
{
public override bool TryAuthenticate(IServiceBase authService, string userName, string password)
{
return true;
}
public override object Authenticate(IServiceBase authService, IAuthSession session, Auth request)
{
session.FirstName = "Name";
//...
session.Authenticate = true;
session.UserName = request.UserName;
session.Roles = new List<string>;
session.Roles.Add("admin")
//....
authService.SaveSession(session, SessionExpiry);
// Return custom object
return new UserAuthResponse { SessionId = session.Id ......};
}
AppHost は次のとおりです。
public override void Configure(Container container)
{
Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] {
new CustomCredentialsAuthProvider()
}));
Plugins.Add(new RegistrationFeature());
container.Register<ICacheClient>(new MemoryCacheClient());
var userRep = new InMemoryAuthRepository();
container.Register<IUserAuthRepository>(userRep);
}
およびテスト サービス:
[Authenticate]
public class TestService : Service {
public object Any(UserRequest request) {
return new UserResponse{Name = request.Name};
}
}
これは実際のコードではないので、構文ミスは申し訳ありません!)))) しかし、考え方は同じです! 何が問題なのか教えてください。テスト サービスを呼び出したときに Unauthorized 例外が発生したのはなぜですか??????????