ServiceStack 的 RegistrationFeature 需要管理员角色

Require admin role for ServiceStack's RegistrationFeature

如何在不允许自助注册的情况下将用户添加到 IAuthRepository?有没有办法为 RegistrationFeature 要求特定角色(例如管理员),或者在本地主机上创建一个只有 RegistrationFeature 只有 运行 的单独项目会更容易吗?

我想我已经找到方法了:

typeof(RegisterService).AddAttributes(new RequiredRoleAttribute("Admin"));

更多信息:https://docs.servicestack.net/restricting-services

如果您不希望用户能够自行注册,那么您可能不想启用默认情况下未注册的 RegistrationFeature 本身。

您将在 using the IAuthRepository itself in your own Service to create users.

中获得更大的灵活性

ServiceStack's new Auth Templates 显示了使用 IAuthRepository 在启动时创建用户的示例,例如:

if (authRepo.GetUserAuthByUserName("user@gmail.com") == null)
{
    var testUser = authRepo.CreateUserAuth(new UserAuth
    {
        DisplayName = "Test User",
        Email = "user@gmail.com",
        FirstName = "Test",
        LastName = "User",
    }, "p@55wOrd");
}

if (authRepo.GetUserAuthByUserName("manager@gmail.com") == null)
{
    var roleUser = authRepo.CreateUserAuth(new UserAuth
    {
        DisplayName = "Test Manager",
        Email = "manager@gmail.com",
        FirstName = "Test",
        LastName = "Manager",
    }, "p@55wOrd");
    authRepo.AssignRoles(roleUser, roles:new[]{ "Manager" });
}

if (authRepo.GetUserAuthByUserName("admin@gmail.com") == null)
{
    var roleUser = authRepo.CreateUserAuth(new UserAuth
    {
        DisplayName = "Admin User",
        Email = "admin@gmail.com",
        FirstName = "Admin",
        LastName = "User",
    }, "p@55wOrd");
    authRepo.AssignRoles(roleUser, roles:new[]{ "Admin" });
}