我正在寻找一个好的方法来实现内部网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是一种好的方法吗?
发布于 2016-03-29 19:57:52
这是一个可行的选项,但不是推荐的选项。
因为WebApi操作将从ApiController继承
而MVC控制器操作将从controller类继承。
如果您想为api和mvc控制器定义路由,那么您需要像下面这样在Global.ascx中注册路由。
应用程序启动
GlobalConfiguration.Configure(WebApiConfig.Register);
RouteConfig.RegisterRoutes(RouteTable.Routes); RouteConfig类
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类
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 }
);
}
}https://stackoverflow.com/questions/23791189
复制相似问题