我创建了一个ASP.Net MVC Web应用程序,并使用NuGet安装Ninject版本2.2.1.4和Ninject.MVC3版本2.2.2.0。此应用程序使用表单身份验我在让授权工作时遇到问题......
这是我在Global.asax中的Application_Start方法:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
var kernel = new StandardKernel();
// binding code goes here...
// Remove this dependency resolver and Authorisation will work...
DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));
}
我在控制器中的一个动作:
[Authorize(Roles = "Admin")]
public ActionResult About()
{
return View();
}
我的web.config的authenitcation部分:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
问题在于,未经授权的用户会直接进入“关于”视图,而不是被重定向到LogOn。我知道问题出在NinjectDependencyResolver上,因为当我从Application_Start中删除“DependencyResolver.SetResolver ...”行时,未经授权的用户被重定向。
我很感激你的帮助。
问候,菲尔
答案 0 :(得分:1)
你没有自己设置DependencyResolver。
阅读文档https://github.com/ninject/ninject.web.mvc/wiki/Setting-up-an-MVC3-application,了解如何使用此扩展程序设置MVC应用程序。