現在、ASP.NET (Silverlight 4) で問題が発生しています。UserID
現在ログインしているユーザーを取得する必要があります (フォーム認証を使用しています)。この値を取得するにはどうすればよいですか?
2 に答える
カスタム フォーム認証チケットを作成し、追加データをチケットに書き込むことができます。認証されると、チケットから追加の値を読み取ることができます。
私のアプリの多くでは、リクエストごとにデータベースにアクセスする必要がないように、ユーザーの ID と表示名をそこに保存する傾向があり、それはうまく機能します。
チケットを手動で作成するには、次のようにします。
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, userState.UserId,
DateTime.Now, DateTime.Now.AddDays(10),
rememberMe, userState.ToString());
string ticketString = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, ticketString);
if (rememberMe)
cookie.Expires = DateTime.Now.AddDays(10);
HttpContext.Response.Cookies.Add(cookie);
基本的に、名前パラメーター (2 番目) とユーザー データの 2 つの値を渡すことができます。ユーザー名以外のデータが必要な場合は、userdata パラメーターを使用できます。
次に、データを読み取る必要がある場合は、最初に認証されていることを確認してから、ユーザー データを読み取ることができます。
if (this.User.Identity != null && this.User.Identity is FormsIdentity)
userData = ((FormsIdentity)this.User.Identity).Ticket.UserData;
userData に何を保存するかは、あなた次第です。単純な値 (ユーザー ID など) にすることも、文字列との間でシリアル化できるオブジェクトのように複雑なものにすることもできます。
私が正しければ、UserID を Web アプリケーションから Silverlight アプリケーションに渡したいと考えています。
最初のステップ: Web アプリケーションに Web サービス (.asmx/.svc) を追加し、同じ操作コントラクトを作成します。
2 番目のステップ: Web サービスで userId を取得し、同じものを返します。
3ステップ:Webで作成したWebサービスのSilverlightアプリにサービス参照を追加する
4 番目のステップでは、非同期メソッドを使用してメソッドを呼び出します。
ここに役立つリンクがありますhttp://www.codeproject.com/Articles/37522/7-Simple-Steps-to-Connect-SQL-Server-using-WCF-fro