Getting User Context in Silverlight 2
I recently completed work on an internal Silverlight app. The project was a blast – it really reminded me of how coding could be fun again. One of the surprising gaps I found in Sliverlight was the inability to get the current user context (e.g. determine the login domain and userid of the person viewing the page). I checked with the product team and they confirmed that this is not (yet?) a feature of Silverlight. While this feature may be provided at a later date, I needed it now. I was able to develop a workaround using ASP.NET’s LOGON_USER server variable using the following:
<%
String userName = Request.ServerVariables["LOGON_USER"];
UID.Value = userName;
%>
<form id="form1" runat="server" style="height:100%;">
<input type="hidden" name="userContext" id="UID" runat="server" />
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<center>
<table border="0">
<tbody>
<tr>
<td width="10"></td>
<td width="auto">
<div id="silverlightControlHost">
<script type="text/javascript">
document.write ("<object data=\"data:application/x-silverlight,\" type=\"application/x-silverlight-2-b1\" width=\"1150px\" height=\"810px\">");
document.write ("<param name=\"source\" value=\"ClientBin/MyApp.xap\"/> ");
document.write ("<param name=\"background\" value=\"white\" />");
document.write ("<param name=\"onerror\" value=\"onSilverlightError\" />");
document.write("<param name=\"initParams\" value=\"userID=" + form1.UID.value + "\"");
document.write("<\object>");
</script>
</div>
</td>
<td width="10"></td>
</tr>
</tbody>
</table>
</center>
</form>
It ain’t pretty but it works. :)
Comments
Anonymous
May 16, 2008
PingBack from http://www.basketballs-sports.info/better-basketball/?p=1004Anonymous
May 18, 2008
Yeah, Of course it works. Since silverlight can get prameters by passing the vlaue into his parameter format. And Cons still!Anonymous
May 26, 2008
Can you simply use object tag or asp:Silverlight control directly instead of using document.write?Anonymous
June 03, 2008
Michael: its probably possible, I haven't looked into it. I needed a quick and easy way to pass a dynamic parameter in and document.write seemed the easiest way to do it. Again, it isn't pretty but it works.Anonymous
July 05, 2008
you can access the membership info via a webservice like described here: http://blogs.msdn.com/brada/archive/2008/05/03/accessing-the-asp-net-authentication-profile-and-role-service-in-silverlight.aspx I think you can get querystring variables with this: HtmlPage.Document.QueryString["key"] (as in page.htm?key=pwd)