如何检查用户是否登录(验证)在Sitefinity小部件模板

本文关键字:小部 Sitefinity 验证 是否 何检查 检查 用户 登录 | 更新日期: 2023-09-27 18:01:34

我需要通过小部件模板向未登录的用户显示一段文本。小部件模板提供了一个Sitefinity动态模块,该模块部分可供未登录的用户使用。我希望未登录的用户得到一个消息,他们应该登录,以阅读完整的内容。

我已经设置了字段的权限,一切都正常工作,但唯一缺失的部分是向未登录的用户显示消息。

我在一个简单的web表单测试文件中测试了这个,它可以工作:

<p>You are <asp:Literal ID="UserStatus" runat="server" />.</p>

和Code-behind是:

public string Name { get; set; }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Page.Request.IsAuthenticated)
        {
            UserStatus.Text = "Logged in";
        }
        else
        {
            UserStatus.Text = "Not logged in";
        }
    }

我知道有一种方法可以在Sitefinity中添加代码隐藏到小部件模板中,但是当我试图将上述代码隐藏到小部件模板中时,我得到了这个错误:

Object reference not set to an instance of an object.

和错误指向行:

UserStatus.Text = "Logged in";

如何通过代码隐藏和小部件模板或任何其他解决方案或方法来实现这一点?

如何检查用户是否登录(验证)在Sitefinity小部件模板

因为Sitefinity小部件模板本质上只是ascx文件,你可以做的是创建另一个自定义用户控件,然后从你的小部件模板引用它,而不是去后面的代码路由。

我已经修改了你的代码,使用Sitefinity api来检查用户是否登录,你可以在你的新控件的页面加载事件中使用它,你将在小部件模板上注册:

protected void Page_Load(object sender, EventArgs e)
{
    if  (ClaimsManager.GetCurrentIdentity().IsAuthenticated)
        UserStatus.Text = "Logged in";
    else
        UserStatus.Text = "Not logged in";
}

你需要下面的using指令:

using Telerik.Sitefinity.Security.Claims;

创建自定义控件之后,您可以使用Import或Register指令从小部件模板引用它:

<%@ Register TagName="LoginStatus" TagPrefix="Custom" Src="~/Controls/LoginStatus/LoginStatus.ascx" %>

你可以这样使用这个控件:

<Custom:LoginStatus runat="server" />

这里是另一个与此相关的帖子:SiteFinity如果用户登录

你有autoeventwireup="true"吗?

如果这没有帮助,你可以把文本变成这样:

"/>

就像上面那样。抱歉在手机上做这个,语法不太好。还要在小部件模板编辑器中查看该小部件,它的右侧应该有一个属性,用于您可以插入的权限。

好运