2012-08-10 8 views
9

私はFacebookのC#SDKを使用しています。私は自分のFacebookアカウントでユーザーを認証します。 「認証する」ためにすべての小切手を実行したら、FormsAuthentication.SetAuthCookie(email, false);ASP.NET MVCアプリケーションにUser.Identity.IsAuthenticatedが設定されていますか?

私の行動の中でUser.Identity.IsAuthenticatedにアクセスすることはできますか?私がその電話をしなかったらどうですか?

認証ステータスに基づいて異なるビューを返すアクションがあり、MVC 4アプリケーションでUser.Identity.IsAuthenticatedが信頼できるものであることを確認します。

答えて

15

登録されており、リクエストごとに実行されるのはFormsAuthentication HTTP moduleです。このモジュールは、web.configの<authentication>タグにmode="Forms"と指定すると自動的に登録されます。このモジュールは、401のすべての応答を傍受し、自動的にユーザーをLogOnページにリダイレクトします(最終結果がHTTPステータスコード200であるため、時には望ましい動作ではありません)。

だからあなたの質問にお答えします

は、その呼び出し、私は私の行動範囲内User.Identity.IsAuthenticated へのアクセスを許可を行っていますか? がその電話をかけなかった場合どうでしょうか?

正確ではありません。この呼び出しはフォーム認証Cookieのみを応答に送信します。リクエストをインターセプトするのはHTTPモジュールであり、このリクエストにクッキーが含まれている場合はUser.Identityと設定されます。

+0

ありがとう、素晴らしい答え。訪問者がサイトの新しいブランドであり、認証クッキーはありません。 'User.Identity.IsAuthenticated'はfalseかnullですか? FormsAuth HTTPモジュールがFormsAuth Cookieを読み取り/検証できる限り、 'User.Identity.IsAuthenticated'はtrueになりますか? – Chaddeus

+5

User.Identityは決してnullではありません。しかし、User.Identity.IsAuthenticatedはfalseになります。 –

+0

完璧、ありがとう!あなたは私の質問に答えるだけでなく、私はformauthをより完全に理解しました。本当に感謝しています。 – Chaddeus

関連する問題