12

この Web サイト (C#/ASP.NET) には、ユーザーがアカウントを登録できるフォーム (VS11 の既定のテンプレート) があり、すべてが入力され、ユーザーがクリックして登録すると、アカウントが作成され、ログが記録されます。ユーザーで(これはうまく機能します)。

この手順の後、割り当てられた UserID を取得したいのですが、うまくいきません。「currentuserid」と「WebSecurity.CurrentUserId」の両方の値を確認するためにブレークポイントを配置しましたが、値は -1 しかありません。次のステップは、ユーザーが次のページにリダイレクトされ、そのページでこれらの機能が機能することです。ここで提供したコードの最初の行でユーザーがすでにログインしているため、UserID を取得できると思いました。

だから私の質問は、なぜここでうまくいかないのですか? 私はこれに非常に慣れていないので、明らかに何かが欠けています。

WebSecurity.Login(username, password);
int currentuserid = WebSecurity.CurrentUserId; // This doesn't work, only returns -1
<here I wish to update other tables but I need the user ID>
Response.Redirect("~/Welcome.cshtml");

ありがとう!

4

3 に答える 3

20

WebSecurity.GetUserId(username) を使用する必要があります

WebSecurity.Login(username, password);
int currentuserid = WebSecurity.GetUserId(username);
Response.Redirect("~/Welcome.cshtml");

こちらをご覧ください: http://msdn.microsoft.com/en-us/library/webmatrix.webdata.websecurity.getuserid(v=vs.99)

于 2012-06-29T13:35:32.653 に答える
3

mdsn から

ユーザーがログインすると、ASP.NET は Cookie に認証トークンを設定します。これにより、ASP.NET は後続の要求でユーザーがログインしたことを認識できます。persistCookie が false の場合、トークンはユーザーがブラウザーを閉じるまでのみ有効です。 .

したがって、WebSecurity.CurrentUserId は後続のリクエストでのみ役立ちます。

その情報に到達する別の方法を見つける必要があります。

于 2012-06-29T13:25:48.063 に答える