Cookie認証とクロスドメイン

RequestオブジェクトとResponseオブジェクトについて簡単に説明します。

要求:クライアントがWebブラウザーを使用してWebアプリケーションに要求を送信すると、クライアントはクライアント情報をサーバーに送信します。サーバーは、すべてのクエリ文字列パラメーターまたはフォームパラメーター、Cookieデータ、およびブラウザー情報を含むHTTP要求を受信します。

Requestオブジェクトを使用すると、サーバーは主に、Post、GETメソッドを使用してHTMLフォームから渡されたパラメーター、Cookie、ユーザー認証などのクライアントブラウザーのデータを取得できます。RequestオブジェクトはPageオブジェクトのメンバーの1つであるため、プログラムで宣言しなくても直接使用できます。

 

応答:クライアントの要求に対するWebサーバーの応答をカプセル化し、対応するHTTP情報を操作して結果を要求者に返します。要求と応答の両方に多くの属性とメソッドがあります。最初の認識段階では、ResponseオブジェクトのRedirectメソッドとWriteメソッドのみが使用されます。RequestオブジェクトのフォームとQueryStringコレクション

Responseオブジェクトは言語を使用してデータをクライアントに出力します。これには、データをブラウザーにエクスポートする、ブラウザーを別のURLにリダイレクトする、Cookieファイルをブラウザーにエクスポートするなどが含まれます。

1、

Cookieは実際にはクライアントに保存される小さなテキスト情報(最大4kb)です。クライアントはサーバーをリクエストします。サーバーがユーザーのステータスを記録する必要がある場合、サーバーはその応答を使用してCookieをクライアントのブラウザに発行します。クライアントブラウザはCookieを保存できます。ブラウザが再度Webサイトを要求すると、ブラウザは要求されたURLとCookieをサーバーに送信します。サーバーはCookieをチェックしてユーザーのステータスを識別します。サービスは、必要に応じてCookieの内容を変更することもできます。
2 Cookie関連の属性

 

 

 

 

 

 

 3. Cookieによる簡単な認証

システムの使用; 
System.Collections.Generic;を使用します。
System.Linqを使用します。
System.Webを使用します。
System.Web.Mvcを使用します。

名前空間权限验证.Controllers 
{ 
    パブリッククラスHomeController:Controller 
    { 
        public ActionResult Index()
        { 
            ViewBag.Title = "Home Page"; 
            //模拟登录
            // if(Request.Form ["Type"]。ToString()== "1")
            Login(); 
            View();を返す 
        } 


        public string GetCookie()
        { 
            var cookie = Request.Cookies ["UserInfo"]; 
            if(cookie!= null) 
            {
                return $ "{cookie.Value}"; 
            } 
            return "先にログインしてください"; 
        } 
        public void Login()
        { 
            //ほとんどのブラウザは4KB前後のcookieデータをサポートし
            ますstring userName = Request.Form ["UserName"]; 
            string passward = Request.Form ["Passward"]; 
            { 
                if(userName == "hnzheng" && passward == "123")
                { 
                    //作成メソッド1 
                    { 
                        HttpCookie httpCookie = new HttpCookie( "UserInfo"); 
                        // OK md5暗号化 
                        httpCookie.Value = $ "{userName} | {passward} ";
                        httpCookie.Domain = "localhost ";
                        httpCookie.Expires = DateTime.Now.AddDays(1); //有効期限を設定する
                        Response.Cookies.Add(httpCookie); 
                    } 
                    //作成方法2 
                    { 
                        //Response.Cookies["UserInfo"]["Name "] = userName; 
                        //Response.Cookies["UserInfo"]["Passward "] = 
                        passward ; //Response.Cookies["UserInfo"].Expires = DateTime.Now.AddDays(1); 
                    } 

                } 
                else Response.Write("ユーザー名またはパスワードが間違っています ");; 
            } 

        } 
            var s = Request.Cookies ["ユーザー情報"];
 
        public string LoginOut()
        {

            if(s!= null)
            { 
                //次の文では必須であり、設定は変更によって無効になり、
                s.Expires = DateTime.Now.AddDays(-30); 
                Response.Cookies.Add( s); 
                //次のメソッドは無効です
                //Response.Cookies.Remove("UserInfo "); 
            } 

            return $" Exit Successful "; 
        } 
    } 
}

  フロントエンド:

 

 

 

 

4.ブラウザのクロスドメインの問題、Cookieは異なるドメイン間で共有されません。たとえば、あなたが知らない2人がお金を共有することはできません。この問題は、ドメインを使用して解決できます。親子ドメインの形式では、すべての子ドメインは親ドメインのCookieを使用します。

以下の例:

メインサイト:www.study.com

ウェブサイト:a.study.com

bウェブサイト:b.study.com   

cウェブサイト:c.study.com

上記の3つのWebサイトのCookieは互いに共有されないため、メインサイトのCookieのドメインを ".study.com"に設定できます。

みんながクッキーを使えるように

マスターステーションのCookieを設定します。

(1)3つのブランチA、B、Cがメインステーションの同じCookieに同時にアクセスできるという設定を解決します。この設定はメインステーションで設定されます。

   HttpCookie tokenCookie = new HttpCookie( "Name");
       tokenCookie.Values.Add( "Value"、Value);
       tokenCookie.Domain = ".study.com";
       tokenCookie.Path = "/";
       tokenCookie.Expires = DateTime.Now.AddDays(365);
       Response.AppendCookie(tokenCookie);

(2)変電所のCookieをクリアします。

HttpCookie cookie = System.Web.HttpContext.Current.Request.Cookies ["CookieName"];
            if(cookie!= Null)
            {
                cookie.Expires = System.DateTime.Now.AddDays(-1); //期限切れの
                Cookieを設定します。 Domain = ".passport.com"; //メインドメイン名を設定します。主にこのステップです
                Response.Cookies.Add(cookie); // Cookie設定を適用します
            }

上記の3つのステップの後、クロスドメインアクセスとクリアが解決されました。すべてのサイトA、B、CがメインサイトのCookieにアクセスできます。同時に、サイトA、B、CがCookieをクリアしたとき他のサイトが取得するクッキーは無価値です

 

おすすめ

転載: www.cnblogs.com/hnzheng/p/12731789.html