我正在尝试编写自己的身份验证,因此我继承CredentialsAuthProvider
并覆盖了 Authenticate 方法。身份验证工作正常,当我调用另一个服务时,我可以看到我保存在会话中的所有数据。
问题是:当我尝试添加 Authenticate 属性并从客户端调用它时,即使我想使用 Requered Role,它也会抛出未经授权的异常。
身份验证服务是:
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 ......};
}
应用主机是:
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};
}
}
这不是真正的代码,所以很抱歉语法错误!))))但想法是一样的!请帮我看看有什么问题,为什么我在调用测试服务时出现未经授权的异常?????????