Cómo tener una cuenta en el panel de administración de Magento
Originalmente, el uso de la autenticación de formularios para la autenticación de usuarios es el método más común, pero hay pocos artículos que expliquen sistemáticamente su método. La mayoría de los artículos en Internet presentan el uso o la implementación de una determinada parte del mismo. y más amigos publicaron artículos preguntando cómo completar el registro de usuario e iniciar sesión de principio a fin. Por lo tanto, este artículo planea utilizar un ejemplo práctico para presentar cómo implementar la autenticación basada en formularios:
Registro de usuario (incluido el almacenamiento cifrado de contraseñas)
Inicio de sesión de usuario (incluida la verificación de contraseña, configuración de cookies de seguridad)
Reemplazo de entidad de usuario (use su propio tipo como tipo de HttpContext.User)
Los principios de autenticación de formularios y otros contenidos no están dentro del alcance de este artículo Puede buscar ingresando palabras clave como "Autenticación de formularios", "Autenticación de formularios", "Autenticación de formularios" en el motor para ver más recursos. Este artículo solo presenta cómo utilizar esta tecnología desde una perspectiva práctica.
No utilizar Membresía
La implementación descrita en este artículo no depende de la función de Membresía proporcionada por ASP.NET 2.0. Esto se debe principalmente a que si usa Membresía, debe usar la utilidad aspnet_regsql.exe para configurar la base de datos; de lo contrario, tendrá que escribir su propio MembershipProvider personalizado.
Si usa aspnet_regsql.exe para configurar la base de datos, generará muchas tablas o campos en la base de datos que en realidad no necesitamos. Además, y lo que es más importante, el SqlMembershipProvider predeterminado agrega la columna ApplicationID a muchas tablas de datos. La intención original puede ser colocar a todos los usuarios de múltiples aplicaciones en una biblioteca pero aislarlos entre sí. Pero la realidad es que cada aplicación guarda los datos del usuario en su propia base de datos. Por lo tanto, introducir este ApplicationID de forma gratuita añade condiciones adicionales cada vez que busca un usuario.
Por otro lado, si considera implementar un MembershipProvider usted mismo, la ganancia supera la ganancia debido a la enorme carga de trabajo.
Sin embargo, si no utiliza la Membresía, no podrá disfrutar de la conveniencia de nuevos controles como Iniciar sesión en ASP.NET 2.0.
Configuración relacionada con la autenticación de formularios
En el archivo web.config, la sección de configuración
Una sección de configuración típica de
name=".ASPXAUTH" p> loginUrl="login.aspx" defaultUrl="default.aspx" proteccion="Todos" timeout="30 " ruta="/" requireSSL="false" slideExpiration="false" enableCrossAppRedirects="false" cookieless="UseDeviceProfile" dominio="" /> Arriba del El código utiliza la configuración predeterminada. En otras palabras, si alguna de sus propiedades de configuración es consistente con el código anterior, puede omitir esta propiedad. Por ejemplo nombre: el nombre de la cookie. La autenticación de formularios puede colocar las credenciales del usuario en una cookie después de la verificación. El atributo de nombre determina el nombre de la cookie. Este valor de configuración se puede obtener a través de la propiedad FormsAuthentication.FormsCookieName (la clase FromsAuthentication se presentará más adelante). loginUrl: URL de la página de inicio de sesión. Este valor de configuración se puede obtener a través de la propiedad FormsAuthentication.LoginUrl. Cuando se llama al método FormsAuthentication.RedirectToLoginPage(), la solicitud del cliente será redirigida a la página especificada por este atributo. El valor predeterminado de loginUrl es "login.aspx", lo que indica que incluso si no se proporciona este valor de atributo, ASP.NET intentará encontrar una página denominada login.aspx en el directorio raíz del sitio. defaultUrl: URL de la página predeterminada. Obtenga este valor de configuración a través de la propiedad FormsAuthentication.DefaultUrl. protección: modo de protección de cookies, los valores posibles incluyen Todo (cifrado y verificación de datos al mismo tiempo), Cifrado (solo cifrado), Validación (solo verificación de datos) y Ninguno. Por motivos de seguridad, esta propiedad normalmente nunca se establece en Ninguno. timeout - Tiempo de caducidad de las cookies. ruta: la ruta de la cookie. Este valor de configuración se puede obtener a través de la propiedad FormsAuthentication.FormsCookiePath. requireSSL: si se requiere SSL para interactuar con el servidor al realizar la autenticación de formularios. Este valor de configuración se puede obtener a través de la propiedad FormsAuthentication.RequireSSL. slidingExpiration——Ya sea para habilitar el "tiempo de vencimiento elástico", si este atributo se establece en falso, la cookie caducará después de que pase el tiempo de espera después de la primera verificación; si este atributo es verdadero, comenzará; desde la última solicitud, no caducará hasta que expire el tiempo de espera, lo que significa que después de la primera verificación, si se garantiza que se enviará al menos una solicitud cada vez que se agote el tiempo de espera, la cookie nunca caducará. Este valor de configuración se puede obtener a través de la propiedad FormsAuthentication.SlidingExpiration. enableCrossAppRedirects: si los usuarios autenticados pueden ser redirigidos a otras aplicaciones. Este valor de configuración se puede obtener a través de la propiedad FormsAuthentication.EnableCrossAppRedirects. Por motivos de seguridad, esta propiedad normalmente siempre se establece en falso. Sin cookies: define si se utilizan cookies y el comportamiento de las mismas. La autenticación de formularios puede guardar la información de las credenciales del usuario en la sesión de dos formas: una es utilizar cookies, es decir, registrar las credenciales del usuario en la cookie. El navegador proporcionará la cookie al servidor cada vez que se envíe una solicitud. Otra forma es utilizar un URI, que consiste en pasar las credenciales del usuario al servidor como una cadena de consulta adicional en la URL. Este atributo tiene cuatro valores: UseCookies (use cookies siempre), UseUri (nunca use cookies, solo use URI), AutoDetect (detecta dispositivos y navegadores, solo si el dispositivo admite cookies y está habilitado en el navegador) Solo se usan cookies cuando hay Cookies presentes) y UseDeviceProfile (sólo detecta el dispositivo, siempre y cuando el dispositivo admita Cookies, independientemente de si el navegador las admite, se utilizan Cookies). Este valor de configuración se puede obtener a través de la propiedad FormsAuthentication.CookieMode. Puede utilizar la propiedad FormsAuthentication.CookiesSupported para saber si se utilizan cookies para pasar las credenciales de usuario para la solicitud actual. dominio: el dominio de la cookie. Este valor de configuración se puede obtener a través de la propiedad FormsAuthentication.CookieDomain. La introducción anterior al nodo Clase FormsAuthentication La clase FormsAuthentication se utiliza para ayudarnos a completar la verificación del formulario y completar funciones adicionales como el inicio de sesión del usuario. Esta clase se encuentra en el espacio de nombres System.Web.Security del ensamblado system.web.dll. Por lo general, esta clase se puede usar directamente en un proyecto de sitio web. Si usa esta clase en un proyecto de biblioteca de clases, asegúrese de hacer referencia a system.web.dll. Todas las propiedades de la clase FormsAuthentication se han introducido en la sección anterior. Esta sección presentará algunos métodos comúnmente utilizados de esta clase. El método RedirectToLoginPage se utiliza para redirigir desde cualquier página a la página de inicio de sesión. Este método tiene dos métodos de sobrecarga: public static void RedirectToLoginPage() public. static void RedirectToLoginPage (string extraQueryString) Ambos métodos redireccionarán el navegador a la página de inicio de sesión (la URL de la página de inicio de sesión está indicada por el atributo loginUrl del nodo RedirectToLoginPage generalmente se llama en cualquier página que no sea una página de inicio de sesión. Además de redirigir, este método también agrega un parámetro ReturnUrl a la URL, que es la dirección URL de la página cuando se llama al método. Esto es para facilitar el regreso automático a la página en la que se encontraba antes de iniciar sesión. El método RedirectFromLoginPage se utiliza para saltar desde la página de inicio de sesión a la página previa al inicio de sesión. Esta página de "inicio de sesión previo" se especifica mediante el parámetro ReturnUrl proporcionado al acceder a la página de inicio de sesión. Si no se proporciona el parámetro ReturnUrl (por ejemplo, en lugar de usar el método RedirectToLoginPage pero usar otros medios para redirigir o acceder directamente a la página de inicio de sesión), el método saltará automáticamente a la página predeterminada especificada por el atributo defaultUrl de Además, si el atributo enableCrossAppRedirects del nodo El método RedirectFromLoginPage tiene dos formas sobrecargadas: public static void RedirectFromLoginPage (string userName, bool createPersistentCookie) public static void RedirectFromLoginPage (string userName, bool createPersistentCookie, string strCookiePath) El parámetro userName indica la identidad del usuario (como nombre de usuario, ID de usuario, etc.); para "recordarme" "; El parámetro strCookiePath representa la ruta de la cookie. Además de completar la redirección, el método RedirectFromLoginPage también almacenará las credenciales de usuario cifradas (si están cifradas depende del atributo de protección del nodo Además, FormsAuthentication también tiene un método SignOut, que se utiliza para completar el cierre de sesión del usuario. El principio es eliminar las credenciales de usuario de Cookie o Uri. Resumen Bien, ahora tienes todos los conocimientos básicos que necesitas dominar. A continuación, implementaremos el registro de usuario, el inicio de sesión y otras funciones. 2 Registro e inicio de sesión de usuario A partir de esta parte, veremos cómo implementar el registro e inicio de sesión de usuario a través de un ejemplo práctico y completo. Antes de presentar el registro y el inicio de sesión, primero presentamos cómo determinar si el usuario ha iniciado sesión y escribimos un código básico para los siguientes ejemplos. Determine si el usuario ha iniciado sesión Primero, agregue una MasterPage al proyecto del sitio web, como MasterPage.master. Inserte el siguiente código antes del control ContentPlaceHolder de esta página maestra y dentro de la etiqueta < asp:LinkButton ID="btnLogin" runat="server" Text="Login" OnClick="btnLogin_Click"> | Bienvenido, [ onclick="btnLogout_Click"> | Aquí se proporcionan tres controles del Panel: pnlAnonymous, pnlLoggedin y pnlNavigate. pnlAnonymous se usa para mostrar enlaces "Iniciar sesión" y "Registrarse" cuando el usuario no ha iniciado sesión; pnlLoggedin se usa para mostrar información del usuario (como el nombre de usuario y el enlace a la página de información personal del usuario, etc., aquí solo se muestra el nombre de usuario). ) cuando el usuario inicia sesión, y se muestra un botón "Cerrar sesión" en todo momento y es la barra de navegación del sitio. Lo que queremos lograr ahora es determinar si el usuario ha iniciado sesión y mostrar uno de pnlAnonymous y pnlLoggedin. Aquí, si está utilizando la membresía ASP.NET 2.0, puede usar fácilmente controles como LoginView, LoginName y LoginStatus para implementar estas funciones; sin embargo, tenemos que soportar los grandes y numerosos objetos de base de datos que trae la membresía, o dedicar más tiempo; para escribir un MembershipPorvider personalizado. Como se presentó en la primera parte de esta serie, si el usuario ya inició sesión, la identidad del usuario que inició sesión (generalmente el nombre de usuario) se puede obtener de HttpContext.User.Identity.Name. Sin embargo, si el usuario no ha iniciado sesión, este valor es una cadena vacía. Por lo tanto, al juzgar si el valor es una cadena vacía, el valor es si el usuario ha iniciado sesión.