LoginView

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

基本介紹

  • 中文名:LoginView
  • 平台:ASP.NET 2.0
  • 模板:AnonymousT、LoggedInTemplate
  • 備註:在同一時刻只能顯示其中一個。
簡介,形式,

簡介

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>

相關詞條

熱門詞條

聯絡我們