首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

1.8  使用LoginView控件

根据不同用户的认证状态,LoginView控件可以用于显示不同的内容。例如,代码清单1-39中的页面将分别为认证用户和匿名用户显示不同的内容(见图1-16)。

图1-16  通过LoginView控件为认证用户显示指定内容

代码清单1-39中的LoginView控件包含了两个模板:AnonymousTemplate模板和LoggedInTemplate模板,在同一时刻只能显示其中一个。

代码清单1-39  ShowLoginView.aspx

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head id="Head1" runat="server">

    <title>Show LoginView</title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

   

    <asp:LoginStatus

        id="LoginStatus"

        Runat="server" />

    <hr />

   

    <asp:LoginView

        id="LoginView1"

        Runat="server">

        <AnonymousTemplate>

        This content is displayed to anonymous users.           

        </AnonymousTemplate>

        <LoggedInTemplate>

        This content is displayed to authenticated users.

        </LoggedInTemplate>   

    </asp:LoginView>

   

    </div>

    </form>

</body>

</html>

该页面中还包含了一个LoginStatus控件,使用它可以快速地登录和登出应用程序。

注解   LoginView控件在使用Windows认证时也能像使用Forms认证一样工作。

在LoginView控件中使用角色

对属于不同角色的不同用户,也可以通过使用LoginView控件来为其分别显示不同的内容。代码清单1-40中的页面包含了一个LoginView控件,该控件包含两个RoleGroup控件。第一个RoleGroup控件含有为管理员组(Administrator)成员显示的内容,第二个则包含为工作人员组(Worker)成员显示的内容。

代码清单1-40  LoginViewRoles.aspx

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    protected void Page_Load(object sender, EventArgs e)

    {

        MembershipCreateStatus status;

        // Create Bill

        Membership.CreateUser("Bill","secret_","bill@somewhere.com","dog","rover",true,out status);

        // Create Ted

        Membership.CreateUser("Ted", "secret_", "ted@somewhere.com", "dog", "rover", true,out status);

        // Create Fred

        Membership.CreateUser("Fred", "secret_", "fred@somewhere.com", "dog", "rover", true, out status);

        // Create Administrator Role       

        if (!Roles.RoleExists("Administrator"))

        {

            Roles.CreateRole("Administrator");

            Roles.AddUserToRole("Bill", "Administrator");

        }

        // Create Manager Role

        if (!Roles.RoleExists("Manager"))

        {

            Roles.CreateRole("Manager");

            Roles.AddUserToRole("Bill", "Manager");

            Roles.AddUserToRole("Ted", "Manager");

        }

        // Create Worker Role

        if (!Roles.RoleExists("Worker"))

        {

            Roles.CreateRole("Worker");

            Roles.AddUserToRole("Fred", "Worker");

        }

    }

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >

<head id="Head1" runat="server">

    <title>LoginView Roles</title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

   

    <asp:LoginStatus

        id="LoginStatus"

        Runat="server" />

    <hr />

   

    <asp:LoginView

        id="LoginView1"

        Runat="server">

        <RoleGroups>

        <asp:RoleGroup Roles="Administrator">

        <ContentTemplate>

        This content is displayed to Administrators.

        </ContentTemplate>

        </asp:RoleGroup>

        <asp:RoleGroup Roles="Manager,Worker">

        <ContentTemplate>

        This content is displayed to Managers

        and Workers.

        </ContentTemplate>

        </asp:RoleGroup>

        </RoleGroups>

    </asp:LoginView>

   

    </div>

    </form>

</body>

</html>

代码清单1-40中的事件处理函数Page_Load()创建了名为Bill、Ted和Fred的三个用户。Bill加入了管理员和经理组(Manager),Ted加入了经理组,而Fred加入了工作人员组。

在同一时刻,LoginView控件只能显示一个RoleGroup所对应的内容。如果同一个用户属于多个RoleGroup,那么将显示第一个匹配的RoleGroup所对应的内容,而其他RoleGroup对应的内容将被忽略。

代码清单1-41  Web.Config

<?xml version="1.0" encoding="utf-8"?>

<configuration>

  <system.web>

    <authentication mode="Forms" />

    <roleManager enabled="true" />

  </system.web>

</configuration>

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论