ServiceStack - 使用自定义注册?

时间:2015-10-27 01:23:59

标签: servicestack registration

我创建了一个用于身份验证的自定义用户表。当我尝试注册用户时,内置的registerervice.cs转到了UserAuth,所以

""ResponseStatus": {
    "ErrorCode": "InvalidCastException",
    "Message": "Unable to cast object of type 'ServiceStack.Auth.UserAuth' to type 'SOS.Api.ServiceModel.Types.User'.","

被抛出。我知道我可以扩展registerervice.cs,但我如何使用自定义的.cs?在AppHost.cs Plugins.Add(new RegistrationFeature());或其他什么?感谢。

1 个答案:

答案 0 :(得分:3)

ServiceStack RegisterService与内置UserAuth模型绑定,即:

[DefaultRequest(typeof(Register))]
public class RegisterService : RegisterService<UserAuth> { }

您需要提供自己的自定义注册服务来处理您可以注册的自定义Poco:

[DefaultRequest(typeof(Register))]
public class CustomRegisterService : RegisterService<CustomUserAuth> { }

由于这是一个不同的注册服务,您不想启用ServiceStack的内置RegistrationFeature

//Plugins.Add(new RegistrationFeature()); //don't register this plugin 

您应该在AppHost中手动注册您的服务:

this.RegisterService<CustomRegisterService>("/register");
this.RegisterAs<RegistrationValidator, IValidator<Register>>();

使用修改后的副本

由于RegisterService相当轻量级,另一个选择是获取它的副本并修改它以引用您的CustomUserAuth POCO。