登录用于授予访问受限页面的权限意味着防止未经授权的用户。 创建登录页面时,应将其命名为 Login.aspx,因为 ASP.Net 在尝试对用户进行身份验证时会查找具有此名称的页面。
我想展示一些关于登录控制的不同之处,以及它将如何移动到另一个页面。 您很少看到,用户无权访问某些特定页面时,用户会自动重定向到 Login.aspx。 当 Login.aspx 页面重定向时,查询字符串 ReturnUrl 会自动添加到页面中(参见图 4)。 ReturnUrl 查询字符串表示您最初请求的完整路径。 完成登录过程后,您会自动重定向原始页面。
首先在默认页面中添加两个超链接,分别命名为 Secret Page 和 Login 页面(参见 Default.aspx)。 使用 Navigator(NavigateUrl 属性)将 Secret 页面定向到 Secret 文件夹中的 Secret.aspx,将登录页面定向到 Login.aspx。
default.aspx.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!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 runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:HyperLink runat="server" ID="idhyper1" Text="Secret Page" NavigateUrl="~/Secret/Secret.aspx" EnableTheming="False"Font-Underline="False"></asp:HyperLink> <asp:HyperLink runat="server" ID="idhyper2" Text="Login Page" NavigateUrl="~/Login.aspx" EnableTheming="False" Font-Underline="False"></asp:HyperLink> </div> </form> </body> </html>
然后在应用程序中添加两种新的Web表单。
首先登录.Aspx必须在应用程序的根目录中添加和在秘密文件夹中添加的第二个Secret.aspx,就像在下面的图表一样添加。
在secret.aspx页面中添加一行,它将在指向该页面时显示。
secret.aspx.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Secret.aspx.cs" Inherits="Secret_Secret" %> <!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 runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <h1> This is secret Page </h1> </div> </form> </body> </html>
在login.aspx页面中添加登录控件。登录控件用于创建登录表单。如果我们是现有的用户,请比我们轻松否则,我们应该填写注册。要创建注册表单,我们应该添加两个属性:
- createUserText:在登录表单上显示文本。
- createUserURL:Direct用户到CreateUserWizard。
我们将解释DistinationPageURL属性的好处,但在这种情况下,一旦我们填写登录表单,我们将直接指向CheckPage.aspx。
如果我们不使用destinationPageURL Properyt,而不是登录控制Default.aspx页面。
在Secret 文件夹中添加web.config以保护密钥(secret.aspx)免受不受约束/未经授权的用户(参见图1)。
web.config.
<?xml version="1.0"?> <configuration> <system.web> <authorization> <deny users="?"/> </authorization> </system.web> </configuration>
login.aspx.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" %> <!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 runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Login ID="idlogin" runat="server" CreateUserText="Sign up" CreateUserUrl="~/CreateUserWizard.aspx" DestinationPageUrl="~/CheckPage.aspx" Font-Underline="false" HyperLinkStyle-Font-Underline="false"> </asp:Login> </div> </form> </body> </html>
我们在登录控件中使用CreateUserURL属性将用户指向CreateUserWizard.aspx页面。
createUserWizard.aspx页面包含CreateUserWizard控件,使表单给用户。
此表单包含用户的所有必需细节。
CreateUserWizard控件使用ContinutionDinivePageURL属性它将在此方案中指定用户到Login.aspx页面。
createUserWizard.aspx.
<%@ Page Language="C#" AutoEventWireup="true" %> <!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 runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:CreateUserWizard ID="idcreateuserwizard" runat="server" ContinueDestinationPageUrl="~/Login.aspx"></asp:CreateUserWizard> </div> </form> </body> </html>
在应用程序中添加检查页面以了解登录控制的DestinationPageURL属性直接检查页面。
在"检查"页面中添加一行以了解指示要检查页面的用户。
CheckPage.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="CheckPage.aspx.cs" Inherits="CheckPage" %> <!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 runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <h1> This is a Check Page </h1> </div> </form> </body> </html>
在调试应用程序之前,请在default.aspx页面上使用setasstartpage属性(请参阅下面的图)。
现在调试应用程序,我们将看到第一个default.aspx页面(请参阅下面的图)。
有两个超链接(秘密页面和登录页面)。
如果单击秘密页面,则不会移动到Secret.aspx,因为secret.aspx只能访问授权用户。
这是由于秘密文件夹中的Web.config文件发生。
登录表单出现在秘密时.Aspx。
有一件事我们应该知道用户在完成登录表单后如何重定向到密钥(secret.aspx)。
还有一件事我们知道命名为returlull的查询字符串参数被自动添加到Internet Explorer地址列上的页面请求中。
如果我们是授权用户,可以使用用户名和密码登录。
单击"登录"按钮时,我们将重定向到实际调用的秘密页面(见下文)。
我们第一个进程已完成才能看到secret.aspx页面,现在我们搬家查看检查页面,看看目标触及到目标上的内容。
现在点击登录页面超链接,它指示我们在登录页面上,我们可以在那里再次看到登录表单。
将Login.aspx的地址列有没有returnull但是当我们调用给秘密页面有returnurel,这是因为在登录时发生了returnure .aspx我们直接从登录页面超链接导航。
单击登录按钮可直接在检查页面(参见下面的图),因为我们在登录控件中设置了DestinationPageURL ="~/checkpage.aspx"属性。
如果您未设置此属性,您将自动导航到 Default.aspx 页面。
Login.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" %> <!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 runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Login ID="idlogin" runat="server" CreateUserText="Sign up" CreateUserUrl="~/CreateUserWizard.aspx" Font-Underline="false" HyperLinkStyle-Font-Underline="false"></asp:Login> </div> </form> </body> </html>
在上面的代码中,无论何时单击登录按钮,都没有 DestinationPageUrl 属性。 您自动重定向到 Default.aspx 页面。