0

我目前在 ASP.NET 中遇到问题(使用 Silverlight 4)。我需要获取UserID当前登录用户的身份,(我正在使用表单身份验证)。我怎样才能得到这个值?

4

2 回答 2

1

您可以创建自定义表单身份验证票并将其他数据写入票证。一旦通过身份验证,您就可以从票证中读取额外的价值。

在我的许多应用程序中,我倾向于将用户的 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),也可以是更复杂的值,例如您可以在字符串之间序列化的对象。

于 2012-09-22T11:37:36.567 回答
0

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

于 2012-09-25T10:02:37.813 回答