5

登録とログインが必要なサイトを作成するときは、多くの要件なしですばやく何かを行うために、[承認]属性などのメンバーシップを使用します。それが何をするかのためにうまく機能します。しかし今、私はもっと何かが欲しいのです。基本的に、私はASP.NET MVC EF CodeFirstを使用してサイトを開発しており、より多くの情報を保持するDBに永続化するユーザーエンティティを作成したいと考えています。登録時に必要なこのような情報には、FirstName、LastName、Gender、Countryなどの追加のプロパティがあります。

カスタムMembershipProviderやMembershipUserなどの実装について読んでみました...これまで行ってきましたが、最終的には思い通りにまとめられていません。これで、PHPまたはASP.NETでサイトを開発するときに、Userクラスを作成し、登録ページに必要なすべてのプロパティを彼に与えて、それをDBにプッシュします。次に、ログインするときに、ユーザー名または電子メールとパスワードを取得し、ユーザーが許可されているかどうかを示すセッション変数を作成します。

これで大丈夫ですか?なぜこのメンバーシップ全体が見た目よりもはるかに複雑なのか理解できないので、すべての要点を見逃しているように感じます。また、ASP.NET MVC Webアプリで、認証されるとこの行が書き出されることに気付きました。

FormsAuthentication.SetAuthCookie(model.UserName, createPersistentCookie: false);

それと...の違いは何ですか

Session["username"] = model.UserName
4

1 に答える 1

2

メンバーシッププロバイダーのルートに行くのではなく(私は個人的にそれが好きではなく、私が使用するアプリケーションにとっては非常に重いと思います)、アプリケーション用のカスタムIPrinicipal / IIdentityオブジェクトを作成し、それらをプロパティで拡張することを検討しましたか?あなたはあなたの「ユーザー」オブジェクトから欲しいですか?

詳細に入るのではなく、この概念をカバーするSOに関するいくつかの優れたリソースがすでにあります。ASP.NETMVC-カスタムIIdentityまたはIPrincipalを設定します。

あなたの質問に関してSession["username"]は、単にセッションクッキーです。FormsAuthenticationのすべての利点が失われます。たとえば、フォーム認証では、ユーザーが認証済みアクセスを必要とするページを要求し、そのユーザーが以前にサイトにログオンしたことがない場合、ユーザーはフォーム認証を使用して構成されたログオンページにリダイレクトされます。

を使用Session["username"]すると、認証のあらゆる側面を手動でロールする必要があります。これを行わないことを強くお勧めします。

于 2012-06-13T02:31:16.827 に答える