针对不同模块的不同IUserMapper实现 - NancyFx

时间:2016-02-21 08:56:20

标签: .net authentication forms-authentication nancy

我目前正在南希网站上工作,该网站分为两个部分。一个是字体最终用户,另一个是管理员。两种类型的用户都有不同的登录页面,其中/login仅允许最终用户登录,admin/login仅允许管理员登录。

我想要的是IUserMapper接口的不同实现。我希望在调用UserMapper时将其解析为/login,并在调用AdminMapper路由时将其解析为/admin/loginUserMapperAdminMapper课程如下:

public class UserMapper: IUserMapper{
    //IUserMapper implementation
}
public class AdminMapper: IUserMapper{
//IUserMapper implementation
}

我在RequestStartup方法

中有以下代码表单身份验证
var formsAuthConfiguration = new FormsAuthenticationConfiguration()
                {
                    RedirectUrl = "~/login",
                    CryptographyConfiguration = CustomCryptographyConfiguration.Default,
                    UserMapper = container.Resolve<IUserMapper>()
                };

                FormsAuthentication.Enable(pipelines, formsAuthConfiguration);

如何在调用IUserMapper时告诉Nancy将UserMapper映射到/login,并在调用AdminMapper时将/admin/login映射到@RestController @RequestMapping("/api") public class ApiController { @Autowired(required = true) PersonService personService; //This is service layer class @RequestMapping("/add") public void add(){ person.setLastName("Rahim"); person.setFirstName("Uddin"); person.setAddress("Dhaka"); person.setCity("Dhaka"); personService.add(person); } }

1 个答案:

答案 0 :(得分:0)

这必须由你自己完成。南希没有机械师能够知道如何自动处理

当您连接表单身份验证并分配UserMapper FormsAuthenticationConfiguration属性时,您无法从容器中解析它。

您将必须根据请求的路由为每个请求创建适当的IUserMapper实例。您可以从传递到NancyContext方法的RequestStartup对象获取请求的路线。