首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >强制asp:LoginView显示带有代码的匿名模板

强制asp:LoginView显示带有代码的匿名模板
EN

Stack Overflow用户
提问于 2018-09-05 04:37:54
回答 2查看 504关注 0票数 0

我有一个带有按钮的loginView,允许匿名用户登录,当用户登录时,将显示注销按钮。当用户单击注销按钮时,用户应该被注销,并且应该显示匿名模板。

我可以注销用户,但loginView会继续显示经过身份验证的模板。如何让它显示匿名模板?

代码语言:javascript
复制
<asp:LoginView ID="LoginView1" runat="server">
    <AnonymousTemplate>
        <asp:Label ID="Label1" runat="server" Text="Label" CssClass="user-login">Guest</asp:Label>
        <button id="guestSignIn" type="button" class="btn-user bg-anonymous" data-toggle="modal" data-target="#loginModal">Login</button>
    </AnonymousTemplate>
    <LoggedInTemplate>
        <asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/Images/Home-icon.png" Height="35" PostBackUrl="~/Profile.aspx" />
        <asp:LoginName ID="LoginName1" runat="server" CssClass="user-login" />
        <asp:Button ID="BtnLogOff" Text="Log out" CssClass="btn-user bg-user" runat="server" OnClick="LogOff" PostBackUrl="~/AboutMe.aspx" />
    </LoggedInTemplate>
    <RoleGroups>
        <asp:RoleGroup Roles="User">
        </asp:RoleGroup>
        <asp:RoleGroup Roles="Admin">
            <ContentTemplate>
                <asp:ImageButton ID="ImageButton2" runat="server" ImageUrl="~/Images/Home-icon.png" Height="20" CssClass=" mr-2" PostBackUrl="~/ProfilePage.aspx" />
                <asp:LoginName ID="LoginName2" runat="server" CssClass="user-login" />
                <asp:Button ID="BtnLogOff1" Text="Log out" CssClass="btn-user bg-admin" runat="server" OnClick="BtnLogOff_Click" PostBackUrl="~/AboutMe.aspx" />
            </ContentTemplate>
        </asp:RoleGroup>
    </RoleGroups>
</asp:LoginView>

protected void LogOff(object sender, EventArgs e)
{
        Session.Clear();
        Session.Abandon();

        Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.Cache.SetNoStore();

        Roles.DeleteCookie();

        try
        {
            Session.Abandon();
            FormsAuthentication.SignOut();
            Response.Cache.SetCacheability(HttpCacheability.NoCache);
            Response.Buffer = true;
            Response.ExpiresAbsolute = DateTime.Now.AddDays(-1d);
            Response.Expires = -1000;
            Response.CacheControl = "no-cache";
            //Response.Redirect("login.aspx", true);
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }
}

我几乎已经尝试了我能想到或找到的所有东西。

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-05 08:03:43

我想通了。提示就在我从另一个论坛复制粘贴的解决方案中。注释的代码行:

代码语言:javascript
复制
//Response.Redirect("login.aspx", true);

DaniDev说我只收到了部分回发。这是因为我在按钮上设置了回发URL。

代码语言:javascript
复制
<asp:ImageButton ID="ImageButton2" runat="server" ImageUrl="~/Images/Home-icon.png" Height="20" CssClass=" mr-2" PostBackUrl="~/ProfilePage.aspx" />

如果我从ImageButton标记中删除PostBackUrl并使用Response.Redirect方法,我将获得一个完整的回发,并且当页面重新加载时,LoginView将恢复为匿名模板。

无论您身在何处,感谢您的帮助DaniDev!!

票数 1
EN

Stack Overflow用户

发布于 2018-09-05 04:49:57

在清除会话数据后,您是否尝试过在页面上调用Validate()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52173686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档