asp.net-mvc – 带有存储库和ninject的ASP.NET MVC MembershipProvider
发布时间:2020-05-24 12:29:27 所属栏目:asp.Net 来源:互联网
导读:如何通过覆盖的MembershipProvider类与UserService进行通信?我不知道如何将连接字符串传递给服务中的用户存储库. 这就是我的应用程序的结构: 存储库(实现中的构造函数采用连接字符串) public interface IUserRepository{ IQueryableUser GetUsers(); IQuery
|
如何通过覆盖的MembershipProvider类与UserService进行通信?我不知道如何将连接字符串传递给服务中的用户存储库. 这就是我的应用程序的结构: 存储库(实现中的构造函数采用连接字符串) public interface IUserRepository
{
IQueryable<User> GetUsers();
IQueryable<UserRole> GetUserRoles();
void InsertUser(User user);
}
服务(构造函数获取用户存储库) public interface IUserService
{
User GetUser(int userId);
User GetUser(string email);
}
UserController(我的控制器的一个例子) public class UsersController : Controller
{
private IUserService userService;
public UsersController(IUserService userServ)
{
userService = userServ;
}
}
NinjectConfigurationModule public class NinjectConfigurationModule : NinjectModule
{
public override void Load()
{
Bind<IUserService>().To<UserService>();
Bind<IUserRepository>().To<UserRepository>()
.WithConstructorArgument("connectionString",ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString
);
}
}
NinjectControllerFactory public class NinjectControllerFactory : DefaultControllerFactory
{
private IKernel kernel = new StandardKernel(new NinjectConfigurationModule());
protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext,Type controllerType)
{
// We don't want to pass null to ninject as we'll get a strange error.
return controllerType == null ? null
: (IController)kernel.Get(controllerType);
}
}
MembershipProvider(这是我的问题所在) public class SimpleMembershipProvider : MembershipProvider
{
//How do I set up User Service here so that ninject can put my connection string here.
public override bool ValidateUser(string username,string password)
{
//Code to use user service.
}
}
解决方法已经回答了问题,但我认为更好的答案是将存储库作为MembershipProvider的属性并在Application_Start中注入它.例如public class AccountMembershipProvider : MembershipProvider
{
[Inject]
public IAccountRepository AccountRepository { get; set; }
...
}
和注射: protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
// Inject account repository into our custom membership & role providers.
_kernel.Inject(Membership.Provider);
// Register the Object Id binder.
ModelBinders.Binders.Add(typeof(ObjectId),new ObjectIdModelBinder());
}
我在这里写了一个更深入的解释: http://www.danharman.net/2011/06/23/asp-net-mvc-3-custom-membership-provider-with-repository-injection/ (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 如何在ASP.NET MVC中生成完整的trace.axd?
- asp.net-mvc – Sitecore视图渲染和控制器渲染助手
- asp.net-mvc – ASP.NET MVC 6中的基本视图页面
- asp.net-mvc – 给定htmlHelper动作名称,如何找出控制器名称
- asp.net – 连接模式和断开模型在EF
- asp.net – MembershipUser和IPrincipal对象之间的关系
- 使用ASP.NET窗体身份验证的WCF服务
- asp.net-mvc – mvc razor @helper可以返回非编码标签吗?
- asp.net-mvc – ASP.NET MVC运行IIS7部署问题
- ASP.Net MVC – 从HttpPostedFileBase读取文件,而不保存
推荐文章
站长推荐
- asp.net-mvc – 有一种方法我可以在ASP中调试路由
- asp.net – 如何使用外部登录提供程序创建刷新令
- .net – 有什么简单的方法可以将标准转换为HQL吗
- asp.net-mvc – ASP MVC 3在不同的视图中使用不同
- asp.net-mvc – 如何在我的Asp.net Mvc中使用lin
- asp.net-mvc – 使用ASP.NET MVC2中的DataAnnota
- asp.net-mvc – ASP.NET MVC获取具有特定配置文件
- 在ASP.NET Web API的JSON输出中没有时间的日期
- 为什么每个人都在ASP.NET Webforms中依赖注入是困
- asp.net-mvc – 在ASP .NET MVC 3中使用XSLT
热点阅读
