我有一个当前的silverlight应用程序,它在asp.net浏览器窗口中运行,是我们内部网站的一部分。
我真的需要有登录的系统用户名。
我有一个作为OOB运行的测试系统,它将执行从系统中获取用户名所需的操作。
我的问题是。。。。OOB silverlight应用程序是否仍能像未标记为OOB应用程序时那样驻留在intranet页面中?
谢谢tony
在Silverlight 4 OOB中,当应用程序以提升的权限运行时,您可以使用AutomationFactory。
var username = "";
if (App.Current.HasElevatedPermissions)
using (dynamic shellObj = AutomationFactory.CreateObject("WScript.Network"))
userName = shellObj.UserName;
请注意,您需要参考
- Microsoft.CSharp.dll和
- System.Core.dll
在Justin Angels博客上阅读更多关于这个主题的信息
如果您正在部署Silverlight 4应用程序,它必须在浏览器外运行,因为浏览器内的沙盒不允许ElevatedPermissions。如果您决定使用Silverlight 5,您可以使用浏览器内应用程序的管理帐户启用提升权限(msdn.microsoft.com/en-us/library/ee721083(v=vs.95).aspx)。
尽管你当然可以在intranet页面内运行该应用程序,但只要你(或用户)不以OOB方式安装和运行,它就没有提升的权限。因此,应用程序将无法访问用户名。Silverlight 5似乎部分取消了这个限制,但我还没有测试过,也不能告诉你是否可以按照上面描述的方式进行。
我只能猜测你将如何使用用户名,但如果你计划将其用于身份验证或授权,你应该做更多的研究。
如果你想真正验证用户,服务器必须是这样做的;密码、windows身份验证等。在PC上运行的用户名(甚至域)不应该被信任是正确的。