关于asp.net mvc 3:自定义成员资格,MVC和WCF。在哪里实施?

Custom Membership, MVC and WCF. Where to implement it?

我有一个复杂的问题,至少对我来说是这样:),而且我会说,它比编码更具有体系结构。

好,我正在创建一个MVC网站。我有一个wcf服务,这是我与数据库,业务对象等进行通信的唯一方式。

  • 网站(MVC)
  • 主机层(WCF)
  • 服务层(WCF的接口和实现-类库)
  • 业务层(类库)
  • 数据层(Plinqo-L2S)
  • 框架(类库-这里有我的自定义成员资格)

换句话说,在我的mvc层的web.config中,我没有任何连接字符串,只有Web服务mambo jambo。我具有未实现的默认成员资格和角色提供程序。

我实现了自定义成员资格和角色提供者。但是,我在服务层级别使用它(我在WCF的web.config上声明了它),这意味着,从MVC中,我调用了Web服务客户端的validate方法(client.ValidateUser(User)),然后在执行该操作时Membership.ValidateUser(用户名,密码)。

如果您需要知道我这样做的原因,我会添加它。只是问我。

我的问题...在我的控制器中,当我将角色属性添加到方法中时,我知道它将失败,因为mvc将尝试使用webconfig中的任何成员资格和角色提供程序...当然,我还没有在mvc级别上实现它,而是在wcf上实现了它。因此它将弹出一个notImplemented错误。我没有尝试过,但是我的胆量是什么。我应该在我的mvc中实现它,然后从此自定义成员资格和角色提供者中调用我的wcf(数据库调用),然后将其从我当前的成员资格提供者和角色提供者中删除吗?

我知道这都是棘手和令人困惑的。如果您有任何疑问,请告诉我。

非常感谢您。


您必须创建Authorize文件管理器的自定义实现,并覆盖OnAuthorization方法,在该方法中您必须进行WCF调用并完成所有工作。

http://geekswithblogs.net/brians/archive/2010/07/08/implementing-a-custom-asp.net-mvc-authorization-filter.aspx