Autenticação de cookies e domínio cruzado

Deixe-me falar brevemente sobre os objetos Request e Response:

Solicitação: quando um cliente envia uma solicitação a um aplicativo Web usando um navegador da Web, o cliente envia as informações do cliente ao servidor. O servidor recebe uma solicitação HTTP, incluindo todos os parâmetros da cadeia de consulta ou parâmetros do formulário, dados do cookie e informações do navegador.

O objeto Request permite principalmente que o servidor obtenha alguns dados do navegador do cliente, incluindo os parâmetros, cookies e autenticação do usuário transmitidos a partir do formulário HTML usando o método Post ou GET. Como o objeto Request é um dos membros do objeto Page, ele pode ser usado diretamente sem nenhuma declaração no programa.

 

Resposta : Encapsula a resposta do servidor da Web à solicitação do cliente, usada para manipular as informações correspondentes HTTP e retorna o resultado ao solicitante.A solicitação e a resposta têm muitos atributos e métodos. Durante o estágio de reconhecimento inicial, apenas os métodos Redirecionar e Gravar do objeto Resposta serão utilizados. Coleção Form e QueryString do objeto Request

O objeto Response usa o idioma para gerar dados para o cliente, incluindo exportar dados para o navegador, redirecionar o navegador para outra URL ou exportar o arquivo de cookie para o navegador.

1 、

Cookie é na verdade um pequeno pedaço de informação de texto (até 4kb), que é salva no cliente. O cliente solicita o servidor.Se o servidor precisar registrar o status do usuário, ele usará a resposta para emitir um cookie no navegador do cliente. O navegador do cliente pode salvar cookies. Quando o navegador solicita o site novamente, ele envia o URL solicitado juntamente com o cookie para o servidor. O servidor verifica o cookie para identificar o status do usuário. O serviço também pode modificar o conteúdo dos cookies conforme necessário.
2 atributos relacionados ao cookie

 

 

 

 

 

 

 3. Autenticação simples através de cookies

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 

namespace Con 验证 .Controllers 
{ 
    public class HomeController: Controller 
    { 
        public ActionResult Index () 
        { 
            ViewBag.Title = "Home Page"; 
            // 模拟 ( 
            // if (Request.Form ["Type"]. ToString () == "1") 
            Login (); 
            retornar View (); 
        } 


        public string GetCookie () 
        { 
            var cookie = Request.Cookies ["UserInfo"]; 
            if (cookie! = null) 
            {
                return $ "{cookie.Value}"; 
            } 
            return "Por favor faça login primeiro"; 
        } 
        public void Login () 
        { 
            // A maioria dos navegadores suporta dados de cookies em torno de 4KB 
            string userName = Request.Form ["UserName"]; 
            string passward = Request.Form ["Passward"]; 
            { 
                if (userName == "hnzheng" && passward == "123") 
                { 
                    // Método de criação 1 
                    { 
                        HttpCookie httpCookie = new HttpCookie ("UserInfo"); 
                        // OK md5 Criptografar 
                        httpCookie.Value = $ "{nome_do_usuário} | {passante} "; 
                        httpCookie.Domain = "localhost ";
                        httpCookie.Expires = DateTime.Now.AddDays (1); // Defina o tempo de expiração 
                        Response.Cookies.Add (httpCookie); 
                    } 
                    // Método de criação 2 
                    { 
                        //Response.Cookies["UserInfo""["Name "] = userName; 
                        //Response.Cookies["UserInfo"[Passward "] = passageiro; 
                        //Response.Cookies["UserInfo"ingerie.Expires = DateTime.Now.AddDays (1); 
                    } 

                } 
                else Response.Write (" Nome de usuário ou senha incorretos ") ;; 
            } 

        } 
 
        sequência pública LoginOut ()
        { 

            var s = Request.Cookies ["Informação de usuário"]; 
            if (s! = null) 
            { 
                // A frase a seguir deve ter, a configuração é inválida por modificação e não pode ser removida com a remoção 
                s.Expires = DateTime.Now.AddDays (-30); 
                Response.Cookies.Add (s); 
                // O método a seguir é inválido 
                //Response.Cookies.Remove("UserInfo "); 
            } 

            retorna $" Exit com sucesso "; 
        } 
    } 
}

  Front end:

 

 

 

 

4. Problemas entre domínios do navegador, os cookies não são compartilhados entre domínios diferentes, como duas pessoas que você não conhece, o dinheiro não pode compartilhar. Este problema pode ser resolvido com a ajuda do domínio. Na forma de domínios pai-filho, todos os domínios filhos usam o cookie do domínio pai.

Os seguintes exemplos:

Site principal: www.study.com

um site: a.study.com

b site: b.study.com   

site c: c.study.com

Os cookies dos três sites acima não são compartilhados entre si, portanto, o domínio do cookie do site principal pode ser definido como ".study.com"

Para que todos possam usar cookies,

Defina o cookie da estação principal:

(1) Resolva a configuração em que três filiais A, B e C podem acessar o mesmo cookie da estação principal ao mesmo tempo, a configuração é definida na estação principal

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

(2) Limpar cookies nas subestações:

Cookie HttpCookie = System.Web.HttpContext.Current.Request.Cookies ["CookieName"];
            if (cookie! = Null)
            {
                cookie.Expires = System.DateTime.Now.AddDays (-1); // Definir
                cookie expirado . Domain = ".passport.com"; // Defina o nome do domínio principal, principalmente nesta etapa
                Response.Cookies.Add (cookie); // Aplicar configurações de cookies
            }

Após as três etapas acima, o acesso e a limpeza entre domínios foram resolvidos. Qualquer site A, B e C pode acessar o cookie do site principal. Ao mesmo tempo, quando qualquer site A, B e C tiver limpado o cookie, Os cookies que outros sites receberão são inúteis

 

Acho que você gosta

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