在我的DocType中,我有一个名为“ membersOnly”(真/假)的属性。
选中后,我要检查用户是否已登录(如果未登录),请使用引荐来源网址重定向到登录页面。
但是执行此操作的最佳方法是什么-我不想在我的主模板中使用它。我如何才能挂接到请求管道,检查“ membersOnly”字段是否存在,是否存在,是否选中了它,并且选中了该用户,而用户未登录,则将该用户重定向?
那里有任何简短的摘要吗?
此外,我知道Umbraco的内置方法。但是对于这种情况,我需要它只是后端页面上的一个简单复选框-但是它触发的功能在本质上是相同的,就像我在后端中使用内置的Umbraco方式一样。
答案 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)
您自己实现此目的的最简单方法可能是创建一个自AuthorizationFilterAttribute
(位于System.Web.Http.Filters
中)的自定义过滤器。
让派生对象使用umbracocontext并根据当前页面查询设置。
Umbraco的自定义验证功能完全相同,有关灵感的更多信息,请查看MemberAuthorizeAttribute at github