Administra los servicios de autenticación de formularios para las aplicaciones Web. No se puede heredar esta clase.
Espacio de nombres: System.Web.Security
Ensamblado: System.Web (en system.web.dll)
Visual Basic (Declaración)
Public NotInheritable Class FormsAuthentication
Dim instance As FormsAuthentication
public sealed class FormsAuthentication
public ref class FormsAuthentication sealed
public final class FormsAuthentication
public final class FormsAuthentication
La autenticación de formularios habilita la validación de usuario y contraseña para aplicaciones Web que no requieren la autenticación de Windows. Con la autenticación de formularios, la información sobre el usuario se almacena en un origen de datos externo, como una base de datos Membership, o en el archivo de configuración de una aplicación. Cuando se autentica un usuario, la autenticación de formularios mantiene un vale de autenticación en una cookie o en la dirección URL para que un usuario autenticado no necesite proporcionar las credenciales con cada solicitud.
La autenticación de formularios se habilita al establecer el atributo mode del elemento de configuración authentication en Forms. Puede requerir que todas las solicitudes a una aplicación contengan un vale de autenticación de usuario válido utilizando el elemento de configuración authorization para denegar la solicitud de cualquier usuario desconocido, como se muestra en el ejemplo siguiente.
<system.web>
<authentication mode="Forms">
<forms loginUrl="login.aspx" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
</system.web>
En el ejemplo anterior, cualquier solicitud para una página ASP.NET que forma parte de la aplicación requiere que la autenticación de formularios proporcione un nombre de usuario válido. Si no existe ningún nombre de usuario, la solicitud se redirige a la propiedad LoginUrl configurada.
La clase FormsAuthentication proporciona el acceso a los métodos y propiedades que puede utilizar en una aplicación que autentica a los usuarios. El método RedirectToLoginPage redirige un explorador a la propiedad LoginUrl configurada para los usuarios que inician sesión en una aplicación. El método RedirectFromLoginPage vuelve a redirigir un usuario autenticado a la dirección URL protegida original que se solicitó o a la propiedad DefaultUrl. Hay también métodos que permiten administrar vales de autenticación de formularios si es necesario.
El ejemplo de código siguiente muestra el archivo Web.config de una aplicación ASP.NET que utiliza el proveedor de suscripciones de ASP.NET para la autenticación de formularios y exige que todos los usuarios se autentiquen.
<configuration>
<connectionStrings>
<add name="SqlServices" connectionString="Data Source=MySqlServer;Integrated Security=SSPI;Initial Catalog=aspnetdb;" />
</connectionStrings>
<system.web>
<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20">
<providers>
<add name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="SqlServices"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
passwordFormat="Hashed"
applicationName="/" />
</providers>
</membership>
</system.web>
</configuration>
En el ejemplo de código siguiente se muestra la página de inicio de sesión de una aplicación ASP.NET que utiliza autenticación de formularios y suscripción de ASP.NET.
Nota: de seguridad |
|---|
| Este ejemplo contiene un cuadro de texto que acepta datos del usuario, lo que puede suponer una amenaza para la seguridad. De forma predeterminada, las páginas Web ASP.NET validan que los datos proporcionados por el usuario no incluyen elementos HTML ni de secuencia de comandos. Para obtener más información, vea Información general sobre los ataques mediante secuencias de comandos. |
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Security" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Public Sub Login_OnClick(sender As Object, args As EventArgs)
If (Membership.ValidateUser(UsernameTextbox.Text, PasswordTextbox.Text)) Then
FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text, NotPublicCheckBox.Checked)
Else
Msg.Text = "Login failed. Please check your user name and password and try again."
End If
End Sub
</script>
<html >
<head>
<title>Login</title>
</head>
<body>
<form id="form1" runat="server">
<h3>Login</h3>
<asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />
Username: <asp:Textbox id="UsernameTextbox" runat="server" /><br />
Password: <asp:Textbox id="PasswordTextbox" runat="server" TextMode="Password" /><br />
<asp:Button id="LoginButton" Text="Login" OnClick="Login_OnClick" runat="server" />
<asp:CheckBox id="NotPublicCheckBox" runat="server" />
Check here if this is <span style="text-decoration:underline">not</span> a public computer.
</form>
</body>
</html>
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
public void Login_OnClick(object sender, EventArgs args)
{
if (Membership.ValidateUser(UsernameTextbox.Text, PasswordTextbox.Text))
FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text, NotPublicCheckBox.Checked);
else
Msg.Text = "Login failed. Please check your user name and password and try again.";
}
</script>
<html >
<head>
<title>Login</title>
</head>
<body>
<form id="form1" runat="server">
<h3>Login</h3>
<asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />
Username: <asp:Textbox id="UsernameTextbox" runat="server" /><br />
Password: <asp:Textbox id="PasswordTextbox" runat="server" TextMode="Password" /><br />
<asp:Button id="LoginButton" Text="Login" OnClick="Login_OnClick" runat="server" />
<asp:CheckBox id="NotPublicCheckBox" runat="server" />
Check here if this is <span style="text-decoration:underline">not</span> a public computer.
</form>
</body>
</html>
Seguridad de .NET Framework
System.Object
System.Web.Security.FormsAuthentication
Seguridad para subprocesos
Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.
Windows 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter
Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.
.NET Framework
Compatible con: 3.0, 2.0, 1.1, 1.0