401-从后台

时间:2017-10-10 13:06:03

标签: c# umbraco umbraco7

问题

当我将控制器更改为继承UmbracoAuthorizedApiController而不是UmbracoApiController 时,我将获得401-Unauthorized,我将被重定向到登录页面。

模式详情

我想从后台打电话给我的一些后端Api,为此我已经按照文章in our.umbraco进行了调查。

首先,我实现了一个继承自UmbracoApiController的控制器,以便能够从邮递员调用我的服务。一切都很顺利,我可以调用我的代码并从Umbraco读取数据:

 [RoutePrefix("api/admins")]
 public class AdminsController : UmbracoApiController
 {
      [HttpGet]
        [Route("getdata")]
        public DataViewModel GetData(string id)
        {
          ....
         } 
 }

然后我使用插件

从Dashboard中的JavaScript调用了我的服务
  $http.get(vm.baseUrl + '/getdata?id=' + id, {})
            .then(function (response) {....}

一切正常,我可以看到我的cookie(包含令牌)已经在请求标题中发送。

token in request

然后我更新了我的控制器以继承 UmbracoAuthorizedApiController ,现在我无法访问我的Apis。

控制器现在是这样的:

   [RoutePrefix("api/admins")]
    public class AdminsController : UmbracoAuthorizedApiController

我做错了什么?

1 个答案:

答案 0 :(得分:1)

授权控制器(与Umbraco中的其他包装MVC控制器相同)会自动路由。当 / umbraco / backoffice / 路径出现在路径中时,后台授权将起作用。

检查:https://our.umbraco.org/documentation/reference/routing/Authorized/ 并且:https://our.umbraco.org/documentation/reference/routing/webapi/authorization

直接说:

  

为了让Umbraco认证后台办公室的请求,   路由需要具体。路由到的任何URL:

     

/ umbraco / backoffice / *

     

将通过身份验证。如果你有一个控制器   如果未在前缀内路由,则不会对其进行身份验证   后台使用。