我目前在 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);
您基本上可以传递两个值 - 名称参数(第二个)和用户数据。如果您想要用户名之外的数据,您可以使用 userdata 参数。
然后,当您需要读取数据时,请确保您首先经过身份验证,然后您可以读取用户数据:
if (this.User.Identity != null && this.User.Identity is FormsIdentity)
userData = ((FormsIdentity)this.User.Identity).Ticket.UserData;
您在 userData 中存储的内容完全取决于您。它可以是一个简单的值(例如您的用户 ID),也可以是更复杂的值,例如您可以在字符串之间序列化的对象。
If i am correct you want to pass UserID from web application to silverlight application.
1st step:Add a web service(.asmx/.svc) in web application create a operation contract for the same.
2nd step:In web service get userId and return the same.
3 step:Add service reference in silverlight app of web service created in web
4 th step call the method using async method.
here is the link which should help you http://www.codeproject.com/Articles/37522/7-Simple-Steps-to-Connect-SQL-Server-using-WCF-fro