Umbraco:检查页面是否标记为受保护并重定向到登录

时间:2018-08-11 07:48:37

标签: umbraco umbraco7

在我的DocType中,我有一个名为“ membersOnly”(真/假)的属性。

选中后,我要检查用户是否已登录(如果未登录),请使用引荐来源网址重定向到登录页面。

但是执行此操作的最佳方法是什么-我不想在我的主模板中使用它。我如何才能挂接到请求管道,检查“ membersOnly”字段是否存在,是否存在,是否选中了它,并且选中了该用户,而用户未登录,则将该用户重定向?

那里有任何简短的摘要吗?

此外,我知道Umbraco的内置方法。但是对于这种情况,我需要它只是后端页面上的一个简单复选框-但是它触发的功能在本质上是相同的,就像我在后端中使用内置的Umbraco方式一样。

2 个答案:

答案 0 :(得分:0)

您可以使用路由劫持,然后通过控制器检查身份验证来执行此操作。但是,如果您要做的只是检查身份验证,那么对您的文档类型进行路由劫持可能就有点过头了。

本质上,要进行路由劫持,您需要创建一个与文档类型同名的控制器,因此,如果您的文档类型为“ memberPage”,则控制器将如下所示:

public class MemberPageController : RenderMvcController
{
    public ActionResult Index(RenderModel model)
    {
        return base.Index(model);
    }
}

请注意,它必须如何继承RenderMvcController才能起作用。

现在,在返回基本的RenderMvcController方法“索引”之前,您现在可以运行代码,例如检查身份验证。

所以您可以这样做:

    public ActionResult Index(RenderModel model)
    {
        if (Members.IsLoggedIn())
        {
            return base.Index(model);
        }
        else
        {
            return Redirect("~/");
        }
    }

答案 1 :(得分:0)

您自己实现此目的的最简单方法可能是创建一个自Authorization​Filter​Attribute(位于System.​Web.​Http.​Filters中)的自定义过滤器。

让派生对象使用umbracocontext并根据当前页面查询设置。

Umbraco的自定义验证功能完全相同,有关灵感的更多信息,请查看MemberAuthorizeAttribute at github