如何在 Asp.net MVC 中实现 plugins/addons?
How to implement plugins/addons in Asp.net MVC?
我真的无法理解我必须实现的功能之一。客户可以拥有一堆他们付费的插件(插件列表在数据库 table 中)。我必须实现仅显示客户已付费的插件的功能。
我知道我可以在视图中创建一堆 if 语句,但感觉这有点 "hacky" 解决方案,工作起来会很痛苦。
实现此类功能的正确方法是什么?
由于您谈论的是 功能 而不是插件,我建议您考虑使用 AuthorizeAttribute 和角色来控制对每个功能的访问 and/or 功能集。
public class FeatureController : Controller
{
[Authorize(Roles = "Feature1")]
public ActionResult Feature1()
{
// Implement feature here...
return View();
}
[Authorize(Roles = "Feature1")]
[HttpPost]
public ActionResult Feature1(Model model)
{
// Implement feature here...
return View();
}
[Authorize(Roles = "Feature2")]
public ActionResult Feature2()
{
// Implement feature here...
return View();
}
// Other features...
}
那么 Feature1
角色中的任何用户都将有权访问 Feature1
,Feature2
角色将有权访问 Feature2
,等等
您可以将 AuthorizeAttribute
与 MvcSiteMapProvider's security trimming feature 结合使用,使菜单项仅在用户处于适当角色时可见。
完全披露:我是MvcSiteMapProvider
的主要贡献者。
我真的无法理解我必须实现的功能之一。客户可以拥有一堆他们付费的插件(插件列表在数据库 table 中)。我必须实现仅显示客户已付费的插件的功能。
我知道我可以在视图中创建一堆 if 语句,但感觉这有点 "hacky" 解决方案,工作起来会很痛苦。
实现此类功能的正确方法是什么?
由于您谈论的是 功能 而不是插件,我建议您考虑使用 AuthorizeAttribute 和角色来控制对每个功能的访问 and/or 功能集。
public class FeatureController : Controller
{
[Authorize(Roles = "Feature1")]
public ActionResult Feature1()
{
// Implement feature here...
return View();
}
[Authorize(Roles = "Feature1")]
[HttpPost]
public ActionResult Feature1(Model model)
{
// Implement feature here...
return View();
}
[Authorize(Roles = "Feature2")]
public ActionResult Feature2()
{
// Implement feature here...
return View();
}
// Other features...
}
那么 Feature1
角色中的任何用户都将有权访问 Feature1
,Feature2
角色将有权访问 Feature2
,等等
您可以将 AuthorizeAttribute
与 MvcSiteMapProvider's security trimming feature 结合使用,使菜单项仅在用户处于适当角色时可见。
完全披露:我是MvcSiteMapProvider
的主要贡献者。