2012-06-13 16 views
5

登録とログインが必要なサイトを作成する際に、何もすばやく必要なものがなければ、メンバーシップに[許可]属性とそれ以外のものを使用します。それが何のためにうまく動作します。しかし今、私はもっと何かを求めています。基本的に私はASP.NET MVC EF CodeFirstを使用してサイトを開発しており、さらに多くの情報を保持するDBに永続するUserエンティティを作成したいと考えています。このような情報には、FirstName、LastName、Gender、Countryなどの追加プロパティが必要です。.NETカスタムメンバーシップスカスタムログイン/登録:認証/承認

カスタムMembershipProviderやMembershipUserなどの実装を読み返しました。しかし、それは私が最後に望むように一緒に来ていないだけです。今度はPHPでサイトを開発するとき、あるいはASP.NETで他の時にUserクラスを作成し、登録ページに必要なすべてのプロパティを与えてDBにプッシュするだけです。それから私がログインするとき、私はユーザー名か電子メールとパスワードを取得し、ユーザーが許可されているかどうかを示すセッション変数を作成するだけです。

これは問題ありませんか?私はちょうどなぜこのメンバーシップ全体の事がそれほど複雑であるかがわからないので、私はそれをすべて欠いているように感じます。また、私は

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

ことと...

Session["username"] = model.UserName 

答えて

2
の違いは何ですか....あなたが認証しているとき、それは、この行を書き出すことをASP.NET MVCのWebアプリに気づきます

メンバーシッププロバイダのルートに行くのではなく(私が個人的に好きではなく、私が扱っているアプリケーションのためにそれほど重くないことを知っています)、アプリケーション用のカスタムIPrinicipal/IIdentityオブジェクトを作成し、あなたの "User"オブジェクトから必要なプロパティ?

よりもむしろSOその表紙にいくつかの素晴らしいリソースは、この概念は、すでに存在している仕様に取得:あなたの質問に関してはASP.NET MVC - Set custom IIdentity or IPrincipal

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

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

+1

私は何かを決めたと思うたびに、何か他のことが示唆され、長期的には最適なパフォーマンスを確保するための方法... ご回答有難うございます。 –

+0

私が言及したことを忘れてしまったのは、FormsAuthenticationを使用して現在のIIdentityとIPrincipalを設定すると、各リクエスト(PHPのコメントに似ています)で「現在のユーザー」にアクセスできるようになることです。たとえば、現在の「ユーザー名」を取得するには、単にコントローラ内でUser.Identity.Nameを使用します。 – Jesse