0

ユーザーがログインしていることを示す暗号化されたトークンを返すカスタムログインがあります。このトークンは、QueryStringを介して別のページ(Dash.aspx)に渡されます。

Dash.aspxは、QueryStringからトークンを取得し、それをページの非表示フィールドに投稿します。Javascriptはその値を読み取り、メモリに保持します。そのトークンは、Webサービス呼び出しを行うために使用されます。これらの呼び出しが完了すると、新しいトークン値が返され、javascriptはその値を保存します(古い値を置き換えます)。

ログイン後にアクセスするための新しいページを追加したい。これらのページには、有効なトークンが渡される必要があります。ユーザーは、Dash.aspxからこれらの新しいページの1つに移動して戻ります(したがって、マスターページの上部にあるいくつかの異なるリンクのみ)

QueryStringを介してトークンを渡すのは好きではありません。また、ページ変更時にアクセス可能な場所でトークンを更新し続ける方法がわかりません。可能であれば、セッションを使用してトークンを保存および渡すことは避けたい

トークンをより慎重に渡し、常に最新の値を渡すようにするにはどうすればよいですか?

これはかなり広い質問だと思いますが、途方に暮れています。私はおそらくこれを処理するいくつかの事前に構築されたアイデアがあるように感じます、私はそれを何をどのように使用するかを知らないだけです。

ありがとう

アップデート

そこで、例を求めました。

ステップ1:ユーザーがログイン-> zholen / zholen123

  • ユーザー名とパスワードを検証するためにサービスが呼び出されます->トークンを返します(「ABC」)
  • ページにリダイレクトDash.aspx?token = ABC

ステップ2:Dash.aspxはクエリ文字列からトークンを取得し、ページの非表示フィールドに割り当てます

  • Javascriptオブジェクトは、非表示フィールドからトークンを取得し、内部に保存します
  • JS Objectは、さまざまなサービスに対して複数の非同期呼び出しを行い、各サービスは新しい更新されたトークンを返し、内部トークンは新しい値で更新されます(トークンは30分ごとに期限切れになります)

望ましい新しいステップ

ステップ3:Dash.aspxからAccount.aspxに移動します

  • Account.aspxをロードするには、有効なトークンが必要です
  • より多くのサービスを呼び出してトークンを変更する

ステップ4:最新のトークンを使用してアカウントからDash.aspxに移動します


サービス呼び出しは、アクションがデータリターン(asmx)またはhtmlリターン(ページメソッド->データが事前に入力されたテーブル)を希望するか、ページの読み込み時に、Webサービス(asmx)またはページメソッドを介して行われます。

Cookieの提案に基づいて、ASMXからそのようなことを実行でき、全体の非同期が実行できないと仮定すると、C#終了時のこれらの呼び出し中に新しいトークン値でCookieをリセットできると思います。 t問題を引き起こします。

また、最新のトークンを内部に格納するJSオブジェクトを作成して、その値を非表示フィールドに戻すことができます。これにより、C#側からアクセスできるようになります。

4

1 に答える 1

1

Cookieを使用できます...Cookieは外部から読み取ることができるため、中間暗号化を使用することをお勧めします。

        //c#

        HttpCookie cookie = new HttpCookie("myTokenCookie");
        cookie.Value = tokenString;
        Response.SetCookie(cookie);

        // then get it back later
        s = Request.Cookies["myTokenCookie"].Value;

        // then you could write it into a hidden input for retrieval in JS
于 2012-05-08T21:39:46.757 に答える