2011-02-08 14 views
6

私は現在ASP.Net認証に奇妙な問題があります。 2次の行を考えてみましょう:FormsAuthentication.Authenticateが認証に失敗する

MembershipCreateStatus ct = new MembershipCreateStatus(); 
Membership.CreateUser("admin", "mypassword", "[email protected]", "1", "1", true, out ct); 

これは私のデータベースに私のユーザーを登録しません。私はこれを確認しました。しかし 、私は直後にこれを実行します。認証が失敗した

FormsAuthentication.Authenticate("admin", "mypassword"); 

。私は

MembershipUserCollection uc = Membership.FindUsersByName("admin"); 

を実行し、UCは私のadminユーザーの小枝にすべての適切な情報を保持しなければ奇妙なことは、私は、ユーザーがDBに存在しないという事実を知っている、それがさらに確認されました。 Authenticateがfalseを返す理由についての意見やヒントはありますか?

+0

シーケンス全体が単一のhttpリクエストであるかどうかを確認します。 2つの別々の要求の過程でこれを試すことができます。どのようにして "admin"を一度作成し、Session.Abandon()を作成し、ページをリロードしてから、認証できるかどうかを確認してください。 – xanadont

+0

Hrm nope。別のページで認証しようとしても問題はパスワードの部分から来なければなりませんか?ユーザーが存在する場合、他に何がうまくいかないのでしょうか? – snwr

答えて

4

少し前に何かを学んだことがあります。MSDN の情報を常に検索すると、の備考欄が表示されます。あなたはそれが通常、最も重要な情報を含んでいることに驚くでしょう。その方法については、そのセクションhereを参照してください。次に、ValidateUserを呼び出して、認証とは異なるauthorzeを呼び出します。見てくださいhere

+1

ああありがとう。それは理にかなっている。 msdnで迷子になったり、hehのすべてのページで備考欄を読んだりするのは簡単です。 – snwr

+0

多くの夜の睡眠は、最近このサイトの質問に答えることで実現しました。私は2,3の質問をしていましたが、そこから出てきたので、私はそれが仕事の場面であるかどうかを見極めました。しかし、それは大抵の場合約70%です。驚いている。赤いフォントであれば、 'Remarks'ははるかに読みやすく、「重要」というセクションをよく呼んでください。このような小さなことだが、マイクロソフトは決してそれを変更しないだろう。なぜなら、おそらく暗闇の中で開発者を守る難読化戦略の一部 –