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