5

Asp.Net MVC を使用して Web プロジェクトに取り組んでおり、これをファーム環境にデプロイする必要があります。

私は多くの記事を読み、SessionState を完全に無効にすることを考えています。これにより、より堅牢なアプリケーションが作成され、いくつかの頭痛の種が解消されると思います (私が読んだすべてのことから、ファームは簡単ではありません)。

ただし、このアプローチについてはまだ完全に明確になっていないことがいくつかありますが、主なものは認証/承認プロセスです。基本的に、サーバーでSessionStateが有効になっていない場合、ユーザーセッションをどのように(もし)処理できるかわかりません。ユーザーが Web サイトにログインしてから別のページにアクセスしようとした場合、そのユーザーが既にログインしていることをどのように確認できますか? Cookie の使用が安全でないことはわかっています。Cookie と DB に保存されているセッション ID の組み合わせを考えましたが、SessionState を無効にすると、セッション ID にもアクセスできなくなると思います。

これに対する最善のアプローチは何ですか?これを明確にするために、私に指摘できる推奨の本/記事はありますか?

助けてくれてどうもありがとう

4

3 に答える 3

6

これにはフォーム認証を使用すると思います。これは、ログインしたユーザー名を管理し、これを介して承認を設定することもできます。

http://msdn.microsoft.com/en-us/library/ff647070.aspx

http://msdn.microsoft.com/en-us/library/xdt4thhy.aspx

http://www.codeproject.com/KB/web-security/formsroleauth.aspx

http://www.beansoftware.com/ASP.NET-Tutorials/Forms-Authentication-Active-Directory.aspx

これらのリンクは、各質問の ans です。これにより、ロールの承認とセッションを管理できます

于 2010-09-16T05:24:11.423 に答える
3

アプリケーションがサポートするワークフローがあり、アプリケーションのリサイクル (クラスター ノードの障害) を維持したい場合は、永続的なセッションの複雑さを完全に無視できる可能性があります。

e コマースのチェックアウトの例、または完了前に多くの状態管理を必要とする同様の複数ステップのプロセスを考えてみましょう。アプリケーションのモデルを設計することをお勧めします。これは、これらの「ステップ」の間、ワークスローの進行状況がモデルを介してネイティブにデータ ストアに永続化されるような方法です。つまり、「ワークフロー」は、アプリのメイン モデルに対するある種の外部性ではなく、そのため、アプリの通常のデータ ストア (データベース) とは対照的に、aspnet セッションのような永続化メカニズムを必要とする「一時的な」ものとして扱われます。 .

たとえば、チェックアウト オブジェクト ツリー (アイテムのリスト、注文など) をセッションに格納するのではなく、データベース自体に永続化します。この方法では、「部分的に完了したチェックアウト」がノードの障害やアプリケーションのリサイクルに耐えられるだけでなく、ユーザーがキッチンで緊急の火を消しに行かなければならない場合や、Windows Update によって PC がクラッシュした場合でも、次にログインしたときに再開できます。 . :D そして: 複雑な分散セッション管理をすべて回避します。ゆっ!

この回答は、質問が実際に強調している認証ポイントだけではありませんが、これは知っておくとよいことであり、クラスター化された/ファーム環境がaspnetアプリに与える問題であることは確かです.

クラスター化された mvc アプリの Hanselman: http://www.hanselman.com/blog/LoadBalancingAndASPNET.aspx

于 2010-09-16T05:53:45.143 に答える
2

FormsAuthentication と ASP.NET ユーザー プロファイルは、SessionState を有効にしなくても機能します。既定では、Cookie とデータベース ルックアップで実行されます。

ショッピング カートのようなシナリオでは、データをデータベースに保存し、ユーザーにタグを付けることを強く検討します。これにより、ユーザーが戻ってきて放棄されたカートをつかむことができます。

SessionState を有効にしないと壊れる可能性があり、壊れる可能性があるのは、MVC の TempData です。これは、ページ間のセッションに物を隠します。しかし、それを使わないようにすれば、あなたは金持ちです。

于 2010-09-16T15:45:12.920 に答える