我试图在我的Web API控制器上实现自定义授权属性,但遇到了意外的行为.
<Authorize(Users:="myUser")>
Public Function GetTodoItems() As IQueryable(Of TodoItem)
Run Code Online (Sandbox Code Playgroud)
上面的代码工作得很好:它将允许"myUser"检索项目,机器人没有其他人被允许访问.但是,当我使用自定义授权尝试相同的方法时,将跳过整个检查,并且任何用户都可以访问该资源.我的派生类中AuthorizeCore的OnAuthorization被覆盖的方法都没有被调用.
<MyAuth(Users:="myUser")>
Public Function GetTodoItems() As IQueryable(Of TodoItem)
Run Code Online (Sandbox Code Playgroud)
派生类继承自System.Web.Mvc.AuthorizeAttribute,并且项目部署在IIS上,启用了Windows身份验证和模拟,并禁用了匿名身份验证.
如果我将相同的自定义授权添加到MVC控制器,那么它可以工作.但是在API控制器上,什么都没有.如果该Authorize属性也不起作用,那就更有意义了.我错过了什么吗?这是预期的行为,还是Beta中的错误?
我正在尝试创建一个SPA应用程序,以利用结果及其功能.但是,公开数据的服务(即Web API)位于一个完全独立的项目中,已经托管在IIS上.我想将upshot绑定到现有的API,但是从我在upshot的HTML帮助器(v1.0.0.1)中可以看到,你需要传入暴露数据的控制器的类型,如下所示:
Html.UpshotContext.DataSource(Of ToDoController)(Function(x) x.GetTodoItems())
其中ToDoController是公开在同一项目中定义的数据的ApiController.
我的问题是,如何将upshot绑定到不在同一项目中的Web API?有什么方法可以使用帮助器,还是我必须手动完成所有操作?
我可以访问Model类(即TodoItem),因为它们位于一个单独的程序集中,可以从两个项目(SPA和Web API)中引用,但我无法访问Web API项目中定义的控制器.