是否可以在同一MVC控制器类中使用2种不同的授权方案?

时间:2019-03-04 22:01:40

标签: c# asp.net .net-4.0 openid-connect identityserver3

我目前正在使用具有Web客户端(MVC)和移动客户端的旧版.NET Framework应用程序。我已经成功配置了我的项目,以便在WebApiConfig.cs中使用以下内容对我的webapi控制器使用承载令牌,并对我的mvc控制器使用会话cookie:

////Tells APIs to ignore the Default Cookie Type Authentication
config.SuppressDefaultHostAuthentication();
config.Filters.Add(newHostAuthenticationFilter(OAuthDefaults.AuthenticationType);

但是,在我的MVC控制器中,我有一些返回IActionResult()的方法和一些返回JSonResult的方法。是否可以在基于控制器的方法上定义属性/ authshcema,该方法允许我的JsonResult控制器方法使用承载令牌而不是cookie会话,即使不在webapi控制器中?这样一来,我便可以从移动客户端调用这些控制器方法,从而节省了很多时间,而不必将这些方法重构为单独的控制器。

示例:

//MVC Controller (Not Web API)
public class HomeController : Controller
{        
  //Should use cookie session
  public ActionResult Index()
  {
      return View();
  }

  //Should use bearer tokens
  [HttpGet]
  public JsonResult GetPrograms()
  {
      var menu = _menuService.GetMenu();
      return new JsonResult
      {
          Data = menu,
          JsonRequestBehavior = JsonRequestBehavior.AllowGet
      };
  }
}

0 个答案:

没有答案