ログインでセッションをつかうのか? for ASP.NET MVC5

最初に

ログオンの状態とかサーバのセッション変数を実現するにはASP.NETやPHP等でも、セッションIDをクッキーに保存するか、セッションIDをURL文字列に書くのは昔から変わっていないようですが。

最新のASP.NET MVC5でももう一度、確認のため実験してみました。

自分のもってたiPhone3とかはたしかDefaultでCookie 読み込まないしどうしたものか?

でも、Cookie非対応のモバイルブラウザーはGoogleさんも非対応といっているぐらいだからいいか!

Google

Google のユーザー名とパスワードを入力すると、モバイル ブラウザに認証トークンが届きます。これにより、ユーザーは Gmail、Google カレンダー、その他の Google サービスにそのつどログインしなくてもアクセスすることができます。通常、認証トークンは Cookie として保存されます。一部の古いモバイル ブラウザでは Cookie がサポートされていないので、Google で従来の認証メカニズムを一時的に保持していましたが、新しい機能の開発に力を注ぐために、この従来のメカニズムを終了することになりました。

豆知識

HTTP.HeaderのBasic認証の項目を利用して「Cookie」「URLストリングキー」の回避する方法もあります。

詳しくないですが、もう一つの方法としては、HTTP.HeaderのBasic認証の項目を使ってキーをやり取りする方法があるようです、都度XHTTPRequestのたびにJavaScriptでHeaderのBasic認証の項目にキーを追加して、サーバでそのキーを確認する。

セッション(Session)と クッキー(Cookie)についての基礎学習は以下が参考になります。

基本的な実験(Cookie Session)

Visual Studio2013+MVC5 でプロジェクトを作成する。

ASPNETMVC5_Session0010

Web.config にセッション使用しますとかきます。(session)

<configuration>
  <system.web>
    <sessionState mode="InProc" timeout="60"></sessionState>
  </system.web>
</configuration>

HomeController.cs でセッション使う

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

namespace WebApplication2.Controllers
 {
 public class HomeController : Controller
 {
 public ActionResult Index()
 {
 Session["test"] = 1;
 return View();
 }

public ActionResult About()
 {
 ViewBag.Message = "Your application description page.";

return View();
 }

public ActionResult Contact()
 {
 ViewBag.Message = "Your contact page.";

return View();
 }
 }
 }

実行してFidderで監視します。 ブラウザー側からWebサーバへのRequest でCookieeを使ってセッションIDを送り込んでいます。これでサーバはこのセッションID(SessionID)からサーバ内のセッション(Session)変数を使えるようになります。

ASPNETMVC5_Session0020

Request

Request sent 42 bytes of Cookie data:
ASP.NET_SessionId=amoog5k03kjzueqp2puyhjf0

基本的な実験(Cookieless session)

クッキーレスセッション(cookieless session)にしてみます。

Web.config にクッキーレスセッション使用しますとかきます。(cookieless session)

<configuration>
  <system.web>
    <sessionState mode="InProc" timeout="60" cookieless="true"></sessionState>
  </system.web>
</configuration>

そうすると、Cookie をつかわずに、セッションID(session)をURLでわたします。
それで、Session変数をサーバ側で参照できるようになります。

http://localhost:49506/(S(snioge0aumu1souuueuane5n))/
ASPNETMVC5_Session0030

ログオンの実験(ASP.NET MVC ログオンの実験)

ブラウザーで、クッキーうけいれないように設定してから、ASP.NET MVC5 をデバック実行する。

ASPNETMVC5_Session0060

やはり、クッキーうけいれないようにしたらエラーがでた。

Fiddler でみるといかのクッキーをリクエストしていた。

ASP.NET MVC5 の標準のログインはクッキーは必要ですね。

Request sent 634 bytes of Cookie data:

ASP.NET_SessionId=mpf5oa5sq2x4krnwp2x1kasd; __RequestVerificationToken=xXXc5ZqoikiPcPYr509GbN_AlowCcADWBtufwx_dStVo1zAO2jg_Yce0daLANcNih-gKtTfMqDcdJpe8AR4qKzaYUbGAS6OYmzPsQGU6OO81; .AspNet.ApplicationCookie=7kMtLtGm2zyXqsyHA1HGB1d59U18FormsU17_PGi7AiIbppv-VpTBvyw25VObzi8plEOfPF1deXzJPIl56bvtpyX-oOzjYvuXheQNS06hco_cH506pQPANnl5R7Bv5K5P98UmUrMgY-_Cgg8bxK0SlO8N096pURbWPAAyTl4AH4hrw6crgbCITcl4l3k9AG4dfzDVoDwFYFTnQBEU1NcF_YlMjkbTekEAk0eWgFariBbYVCgmMexT2EJth0IraFo-2zUfZjqX_Ht2yAe8Tdp65y7zzasci_uHeqGfLjcujr_eB2gSTgkqCsq3j-M9JBip645ARStBy9dYqGRPL4eGIVnEOMpOE3_A3xuZyXkXcJ5r1tPEmVAJ6-66CI47WXe6hAFt2ugGlbY1ygXT793kN4U6s_Z7qVmFndB3-lrnBU

カテゴリー.NET

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です