我在实现一个RoleProvider来为身份验证提供role功能。
这是我的RoleProvider
public class MyProvider : System.Web.Security.RoleProvider
{
private IUserAccountManage userAccountManage;
public MyProvider (IUserAccountManage managePara)
{
userAccountManage = managePara
}
public override string[] GetRolesForUser(string username)
{
return userAccountManage.GetUserSiteRoles(username);
}
public override bool IsUserInRole(string username, string roleName)
{
return userAccountManage.IsUserInSiteRole(username, roleName);
}
#region 未实现方法
public override string ApplicationName { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
public override void AddUsersToRoles(string[] usernames, string[] roleNames)
{
throw new NotImplementedException();
}
public override void CreateRole(string roleName)
{
throw new NotImplementedException();
}
public override bool DeleteRole(string roleName, bool throwOnPopulatedRole)
{
throw new NotImplementedException();
}
public override string[] FindUsersInRole(string roleName, string usernameToMatch)
{
throw new NotImplementedException();
}
public override string[] GetAllRoles()
{
throw new NotImplementedException();
}
public override string[] GetUsersInRole(string roleName)
{
throw new NotImplementedException();
}
public override void RemoveUsersFromRoles(string[] usernames, string[] roleNames)
{
throw new NotImplementedException();
}
public override bool RoleExists(string roleName)
{
throw new NotImplementedException();
}
#endregion
}
这是我的NinjectDependercyResolver
public class NinjectDependercyResolver : IDependencyResolver
{
private IKernel kernel;
public NinjectDependercyResolver(IKernel kernelParam)
{
kernel = kernelParam;
AddBindings();
}
public object GetService(Type serviceType)
{
return kernel.TryGet(serviceType);
}
public IEnumerable<object> GetServices(Type serviceType)
{
return kernel.GetAll(serviceType);
}
private void AddBindings()
{
kernel.Bind<IAuthentication>().To<AuthenticationSrv>();
kernel.Bind<IUserAccountManage>().To<UserManageSrv>();
kernel.Bind<ILogRepository>().To<LogRepository>();
}
}
但是程序执行后提示 没有空参数的构造函数。
我在MVC Controller里面。也是写一个构造函数来传入接口,不知道为什么在这没有成功。