asp.net-mvc – 如何将IoC成员资格提供程序与ASP.NET MVC集成
|
我有一个在我的MVC控制器中使用的自定义成员资格/角色提供程序,我也希望能够访问ASP.NET MVC,所以我可以使用AuthorizationFilters等。由于有很多人实现了自定义提供程序,我想象很多人都做了这个,但是我没有想出来,也没有发现专门解决这个问题的帖子。 This post是我问题的另一面。在我的情况下,我的自定义提供程序与我的控制器工作良好,我想让MVC也使用它。 我的提供商实现了IoC /依赖注入设计。提供程序公开了超出基准成员资格/角色API的附加功能。在我的控制器中,我使用Castle Windsor创建实例。代码看起来类似于: public class HomeController : Controller {
IMembershipService _membershipService;
public HomeController(IMembershipService membershipService) {
_membershipService= membershipService;
}
}
<castle>
<components>
<component id="MembershipService"
service="IMembershipService,MyApp"
type="MembershipService,MyApp" lifestyle="PerWebRequest">
<parameters>
<connectionString>#{defaultConnectionString}</connectionString>
</parameters>
</component>
</components>
</castle>
public class WindsorControllerFactory : DefaultControllerFactory {
private WindsorContainer _container;
public WindsorControllerFactory() {
_container = new WindsorContainer(new XmlInterpreter(new ConfigResource("castle")));
List<Type> controllerTypes = new List<Type>();
foreach (Type t in Assembly.GetExecutingAssembly().GetTypes()) {
if (typeof(IController).IsAssignableFrom(t))
controllerTypes.Add(t);
}
foreach (Type t in controllerTypes) {
// LifestyleType.Transient = new controller instance for each request
_container.AddComponentLifeStyle(t.FullName,t,LifestyleType.Transient);
}
}
protected override IController GetControllerInstance(Type controllerType) {
return (IController)_container.Resolve(controllerType);
}
这一切都在我的C#代码很好,但是我想把我的提供者连接到MVC中以使用[Authorize]过滤器: [Authorize (Users="user1,user2",Roles="role8")]
public ViewResult MyResult(int x) {
// implement
}
我知道通常的方式告诉ASP.NET关于一个自定义的成员资格或角色提供程序是在web.config文件如下,但如果我这样做ASP.NET将尝试调用默认的构造函数,这将不起作用。任何帮助赞赏。 <membership> <providers> <clear/> <add name="MyMembershipProvider" type="MyMembershipProvider"> </providers> </membership> 解决方法最简单的方法是使用ASP.NET的标准机制< membership>在web.config中。你只要让它使用默认的构造函数,但是你可以覆盖Initialize()并在其中拉取依赖项。使用 this作为参考。就个人来说,由于这样的事情,我宁愿完全避免提供者的模式,所以我使用类似于described in the MonoRail docs的方法。嗯,它不那么blo肿,更灵活。最后,它只是设置HttpContext.User与正确的IPrincipal实现,这是AuthorizeAttribute使用的。 我最近blogged about a solution to do proper IoC with MembershipProviders。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – OnClientClick中的服务器标记
- 有没有办法加快asp.net中的编辑 – 编译 – 调试周期?
- asp.net-web-api – Hot Towel / Durandal / Breeze.js:如
- asp.net – 如何使用ReportService2010命名空间呈现报告
- asp.net-mvc-3 – 在Html.BeginForm()中使用DELETE表单方法
- asp.net 大文件上传控件
- asp.net – 无法加载文件或程序集“Microsoft.SqlServer.DT
- asp.net-mvc – MVC4部分视图没有将值加载到“容器”模型中
- 为什么我的IIS7应用程序池在从ASP.NET页面调用的DLL中发生异
- asp.net – 可以将值或参数传递到用户控件?
- asp.net mvc 3 c#post变量数组
- asp.net-mvc-3 – Razor语法中的ValidateRequest
- .net – 如何组织资源文件?
- asp.net – 创建新的实体数据模型的麻烦
- asp.net-mvc-3 – 创建MVC3剃刀助手,如Helper.Be
- entity-framework-4 – 通过扩展方法的IDbSet和公
- ASP.NET网站“发布”vs Web部署项目
- asp.net-mvc – 在哪里得到的Microsoft.Web.Mvc.
- 如何删除IIS自定义标头像X-Powered-By:ASP.NET从
- asp.net-mvc – ASP.NET MVC:如何从Html.Action
