LoginView

ASP.NET 2.0揭秘 根據不同用戶的認證狀態,LoginView控制項可以用於顯示不同的內容。例如可以分別向登錄用戶和匿名用戶顯示不同的內容。

簡介

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_","[email protected]","dog","rover",true,out status);

// Create Ted

Membership.CreateUser("Ted", "secret_", "[email protected]", "dog", "rover", true,out status);

// Create Fred

Membership.CreateUser("Fred", "secret_", "[email protected]", "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>

相關詞條

熱門詞條

聯絡我們