如何扩展OrchardCMS以显示/隐藏来自intranet和internet用户的导航和内容

如何扩展OrchardCMS以显示/隐藏来自intranet和internet用户的导航和内容,orchardcms,Orchardcms,我有一些页面,我只希望从给定IP范围内访问站点的用户可以访问这些页面。对于所有其他用户,这些页面应该不可访问,并且它们各自的链接在菜单/导航中不可见 我是果园CMS的新手,有人能给我提供一些一般性的指导并为我指出正确的方向吗?有两个方面可以回答你的问题 1。要检查对orchard内容项及其相关菜单项的访问: 为了实现这一点,您可以实现新的iaAuthorizationServiceEventHandler来替换默认的基于角色的授权服务,最适合您的示例是ContentMenuItemAuthori

我有一些页面,我只希望从给定IP范围内访问站点的用户可以访问这些页面。对于所有其他用户,这些页面应该不可访问,并且它们各自的链接在菜单/导航中不可见


我是果园CMS的新手,有人能给我提供一些一般性的指导并为我指出正确的方向吗?

有两个方面可以回答你的问题

1。要检查对orchard内容项及其相关菜单项的访问:

为了实现这一点,您可以实现新的
iaAuthorizationServiceEventHandler
来替换默认的基于角色的授权服务,最适合您的示例是
ContentMenuItemAuthorizationEventHandler
,您可以在
Orchard.ContentPicker
模块下找到它,我提供了一个示例代码来解释此处理程序的用法:

公共类CustomAuthorizationEventHandler: IAuthorizationServiceEventHandler{ public ContentMenuItemAuthorizationEventHandler(){ } 公共无效检查(CheckAccessContext上下文){} public void Adjust(CheckAccessContext上下文){ //在这里,您可以将您的业务授予用户或不授予用户 context.grated=true;//角色服务将通过此值向用户授予访问权限 context.Adjusted=true; } public void Complete(CheckAccessContext上下文){} } 2。检查对某些操作的访问。

要实现这一点,您可以实施新的
IAuthorizationFilter
,以检查对系统中某些操作的访问:

公共类CustomAuthorizationFilter:FilterProvider,IAAuthorizationFilter{ 授权时的公共无效(AuthorizationContext filterContext){ 如果(!授予){ filterContext.Result=新的HttpUnauthorizedResult(); } } }
@mdameer提到的解决方案是可以的,但是在使用容器、列表、投影和其他东西时会遇到困难

我有一个类似的任务,但日期时间范围。查看我的问题和任务答案,了解如何通过自定义零件解决此问题:


签出devqon,我知道如何在dot.net中执行此操作,这不是语法问题。问题是我如何扩展果园CMS以导致这种行为。谢谢