Autenticación de cookies y dominio cruzado

Permítanme hablar brevemente sobre los objetos Solicitud y Respuesta:

Solicitud: cuando un cliente envía una solicitud a una aplicación web mediante un navegador web, el cliente envía la información del cliente al servidor. El servidor recibe una solicitud HTTP, que incluye todos los parámetros de cadena de consulta o parámetros de formulario, datos de cookies e información del navegador.

El objeto Solicitud principalmente permite al servidor obtener algunos datos del navegador del cliente, incluidos los parámetros, las cookies y la autenticación de usuario que se pasa del formulario HTML utilizando el método Post o GET. Como el objeto Solicitud es uno de los miembros del objeto Página, se puede usar directamente sin ninguna declaración en el programa

 

Respuesta : Encapsula la respuesta del servidor web a la solicitud del cliente, utilizada para manipular la información correspondiente de HTTP, y devuelve el resultado al solicitante. Tanto la solicitud como la respuesta tienen muchos atributos y métodos. Durante la etapa de reconocimiento inicial, solo se utilizarán los métodos Redirect y Write del objeto Response. Colección Form y QueryString del objeto Request

El objeto Response utiliza un lenguaje para enviar datos al cliente, incluida la exportación de datos al navegador, la redirección del navegador a otra URL o la exportación del archivo cookie al navegador.

1 、

Cookie es en realidad una pequeña pieza de información de texto (hasta 4kb), que se guarda en el cliente. El cliente solicita el servidor. Si el servidor necesita registrar el estado del usuario, utiliza la respuesta para emitir una cookie al navegador del cliente. El navegador del cliente puede guardar cookies. Cuando el navegador solicita nuevamente el sitio web, el navegador envía la URL solicitada junto con la cookie al servidor. El servidor verifica la cookie para identificar el estado del usuario. El servicio también puede modificar el contenido de las cookies según sea necesario.
2 atributos relacionados con cookies

 

 

 

 

 

 

 3. Autenticación simple a través de cookies

utilizando el sistema; 
usando System.Collections.Generic; 
usando System.Linq; 
usando System.Web; 
usando System.Web.Mvc; 

espacio de nombres 权限 验证 .Controllers 
{ 
    public class HomeController: Controller 
    { 
        public ActionResult Index () 
        { 
            ViewBag.Title = "Home Page"; 
            // 模拟 登录
            // if (Request.Form ["Type"]. ToString () == "1") 
            Login (); 
            volver Ver (); 
        } 


        cadena pública GetCookie () 
        { 
            var cookie = Request.Cookies ["UserInfo"]; 
            if (cookie! = null) 
            {
                return $ "{cookie.Value}"; 
            } 
            return "Inicie sesión primero"; 
        } 
        public void Login () 
        { 
            // La mayoría de los navegadores admiten datos de cookies en una 
            cadena de 4KB userName = Request.Form ["UserName"]; 
            string passward = Request.Form ["Passward"]; 
            { 
                if (userName == "hnzheng" && passward == "123") 
                { 
                    // Método de creación 1 
                    { 
                        HttpCookie httpCookie = new HttpCookie ("UserInfo"); 
                        // OK md5 Cifrar  
                        httpCookie.Value = $ "{userName} | {passward} ";
                        httpCookie.Domain = "localhost ";
                        httpCookie.Expires = DateTime.Now.AddDays (1); // Establecer el tiempo de caducidad 
                        Response.Cookies.Add (httpCookie); 
                    } 
                    // Método de creación 2 
                    { 
                        //Response.Cookies["UserInfo"font>["Name "] = userName; 
                        //Response.Cookies["UserInfo"font>["Passward "] = passward; 
                        //Response.Cookies["UserInfo"font>.Expires = DateTime.Now.AddDays (1); 
                    } 

                } 
                más Response.Write (" El nombre de usuario o la contraseña son incorrectos ") ;; 
            } 

        } 
 
        cadena pública LoginOut ()
        { 

            var s = Request.Cookies ["Información de usuario"];
            if (s! = null) 
            { 
                // La siguiente oración debe tener, la configuración no es válida por modificación, no se puede eliminar eliminando 
                s.Expires = DateTime.Now.AddDays (-30); 
                Response.Cookies.Add ( s); 
                // El siguiente método no es válido 
                //Response.Cookies.Remove("UserInfo "); 
            } 

            return $" Exit Successful "; 
        } 
    } 
}

  Frente:

 

 

 

 

4. Problemas entre dominios del navegador, las cookies no se comparten entre diferentes dominios, como dos personas que no conoce, el dinero no puede compartir. Este problema se puede resolver con la ayuda del dominio. En forma de dominios padre-hijo, todos los dominios hijos usan la cookie del dominio padre.

Los siguientes ejemplos:

Sitio principal: www.study.com

un sitio web: a.study.com

b sitio web: b.study.com   

c sitio web: c.study.com

Las cookies de los tres sitios web anteriores no se comparten entre sí, por lo que el dominio de la cookie del sitio principal se puede establecer en ".study.com"

Para que todos puedan usar cookies,

Configure la cookie de la estación maestra:

(1) Resuelva la configuración de que tres ramas A, B y C pueden acceder a la misma cookie de la estación principal al mismo tiempo, la configuración se establece en la estación principal

   HttpCookie tokenCookie = new HttpCookie ("Nombre");
       tokenCookie.Values.Add ("Valor", Valor);
       tokenCookie.Domain = ".study.com";
       tokenCookie.Path = "/";
       tokenCookie.Expires = DateTime.Now.AddDays (365);
       Response.AppendCookie (tokenCookie);

(2) Borrar cookies en subestaciones:

HttpCookie cookie = System.Web.HttpContext.Current.Request.Cookies ["CookieName"];
            if (cookie! = Null)
            {
                cookie.Expires = System.DateTime.Now.AddDays (-1); // Establecer
                cookie caducada . Domain = ".passport.com"; // Establezca el nombre de dominio principal, principalmente este paso
                Response.Cookies.Add (cookie); // Apply Cookie Settings
            }

Después de los tres pasos anteriores, se han resuelto el acceso y la limpieza entre dominios. Cualquier sitio A, B y C puede acceder a la cookie del sitio principal. Al mismo tiempo, cuando cualquier sitio A, B y C ha borrado la cookie Las cookies que obtendrán otros sitios no tienen valor

 

Supongo que te gusta

Origin www.cnblogs.com/hnzheng/p/12731789.html
Recomendado
Clasificación