2011-07-06 10 views
21

私は認証コードがあります:デバッグ文を入れることでHttpContext.User.Identityはいつ設定されますか?

var authTicket = new FormsAuthenticationTicket(/*blahblah....*/); 
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, 
          FormsAuthentication.Encrypt(authTicket)); 
Response.Cookies.Add(cookie); 
var name = HttpContext.User.Identity.Name; // line 4 

を、私は4行目nameが空であることがわかります。しかし、次回にこのブラウザセッションで電話をすると、HttpContext.User.Identity.Nameが正しく設定されます。

この値はいつ設定されますか?あなたのコードから

+0

なぜ単に手動でクッキーを作成し、それをレスポンスに追加するのかというだけの理由が考えられます。FormsAuthentication.SetAuthCookie()? –

+0

また、認証Cookieを設定しようとしている場合、なぜHttpContextからユーザー名を取得する必要があるのだろうか?確かにAuth Cookieを設定しようとしている場合 - あなたはこのユーザーを「ログイン」したいと言っているのですが、ユーザー名がわからない場合はどうすればいいですか? –

+1

@ニック - 理由は、これが一連の開発の最新のものであるからです。ここから戻ってくることができます:http://stackoverflow.com/q/6586156/7850 –

答えて

18

をHttpContext.User.Identity.Nameが設定されます。指定されたRequestに認証Cookieが含まれている場合あなたのケースでは、ブラウザが応答するためにクッキーが追加されました。ブラウザは、次の要求が存在する場合は、そのCookieを追加します。

+0

これは私が考えていたものです。私があなたが描いていることに従わない行動を経験していることを除いて。参照してください:http://stackoverflow.com/q/6586156/7850 –

+0

うわー、男。それはあなたがそこにある真に困惑している問題のようですが、私が会話から集まってきたときに、ログイン後にクライエントがエアクライアント内で応答とともに送信されています。私はあなたの最初の問題を助けることができるかどうかを試してみます。 – tehshin

+0

は、フォーム認証とWindows認証の両方で設定された認証クッキーです。 – MacGyver

2

それはあなたのように見えるのいずれかを呼び出す必要があります:

FormsAuthentication.Authenticate(name, password) 

または、以下のメンバーシップを使用している場合:

Membership.ValidateUser(name, password) 
+0

ありがとう、しかし、それは私が求めているものではありません。 .. –

関連する問題