首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有Web Api的Asp.Net MVC

带有Web Api的Asp.Net MVC
EN

Stack Overflow用户
提问于 2014-05-22 02:33:59
回答 1查看 982关注 0票数 0

我正在寻找一个好的方法来实现内部网Web应用程序使用Web (2)与Asp.net MVC(5)。应用程序的设计方式是,我们在客户端和服务器端分别使用Web和web作为单个应用程序/网站。MVC是因为我们必须根据安全权限来限制操作。我们不渲染动作按钮(例如。保存,删除等),当我们调用MVC控制器的视图,如果用户没有权限。其他操作是利用Web API方法保存、删除等,

基本的想法是

MVC控制器用于在用户没有权限的情况下生成删除了操作按钮的视图(AngularJS的html模板)。数据操作是通过Web (AngularJS $http服务web调用)实现的

问题在这里

我们如何派生出一种可用于MVC和Web API的身份验证机制?(我们可以创建身份验证筛选器,但必须为MVC和Web API创建单独的筛选器,对吧?)

一旦用户通过身份验证,我们如何与MVC控制器和Web Api控制器共享此信息,而不是验证来自angular js的每个请求?

是否可以同时对MVC和WebApi使用ASP.Net窗体身份验证?如果是这样,我们如何做到这一点?表单身份验证令牌是否会使用authorize属性自动验证MVC控制器和Web Api控制器?

另外,我想知道,在一个应用程序中混合使用MVC和WebApi是一种好的方法吗?

EN

回答 1

Stack Overflow用户

发布于 2016-03-29 19:57:52

这是一个可行的选项,但不是推荐的选项。

因为WebApi操作将从ApiController继承

而MVC控制器操作将从controller类继承。

如果您想为api和mvc控制器定义路由,那么您需要像下面这样在Global.ascx中注册路由。

应用程序启动

代码语言:javascript
复制
GlobalConfiguration.Configure(WebApiConfig.Register);
RouteConfig.RegisterRoutes(RouteTable.Routes);  

RouteConfig类

代码语言:javascript
复制
    public static class RouteConfig
        {
            public static void RegisterRoutes(RouteCollection routes)
            {   

    .....
    ....
routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
    }
    }

WebApiConfig类

代码语言:javascript
复制
public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // TODO: Add any additional configuration code.

            // Web API routes
            config.MapHttpAttributeRoutes();
            config.Formatters.XmlFormatter.UseXmlSerializer = true;

            config.MessageHandlers.Add(new YourMessageHandlers());

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new {  id = RouteParameter.Optional }
            );
        }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23791189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档