如果Identity Role不是Admin,则从Web Api重定向到MVC控制器

时间:2016-06-13 08:20:08

标签: c# asp.net-mvc asp.net-mvc-4 asp.net-web-api

当使用不是Admin时,如何从web api控制器重定向到mvc home controller。

// GET api/adminleave
        public IEnumerable<ObjectModel> GetPendingLeave()
        {
            if (!User.IsInRole("Admin"))
            {
                var response = Request.CreateResponse(HttpStatusCode.Moved);
                response.Headers.Location = new Uri("example.com");
                return response;
            }
        List<ObjectModel> obj=new List<ObjectModel>();
       return obj;

        }

我按照上面的方式尝试但是出错了。

  

错误27无法隐式转换类型   &#39; System.Net.Http.HttpResponseMessage&#39;至   &#39; System.Collections.Generic.IEnumerable&#39 ;.   存在显式转换(你错过了吗?   cast?)F:\ WebPortal \ WebApplication1 \ Controllers \ Leave \ AdminLeaveController.cs 34 24 WebApplication

当我从webAPI控制器返回对象列表时,如何重定向表单webapi控制器

1 个答案:

答案 0 :(得分:1)

你想做什么,在MVC / WebAPI关系方面没有任何意义。在MVC中,整个网站由您的服务器提供服务,使用您依赖于客户端API关系的WebAPI,您可以在其中创建一个API,您可以使用该API。

您无法在重定向方面混合使用这些方法。您可以做的是通知您的客户,在此特定方案中需要重定向(但这仍然不是理想的解决方案)并在客户端执行重定向。

考虑一下 - 如果你创建一个可以被“所有人”使用的API,那么执行这样的重定向似乎是正确的吗?另一种选择是在MVC控制器中调用一个动作并获得结果,但我假设您希望在用户具有“管理员”角色时转到另一个页面。