【问题标题】:Windows authentication(NTLM) in a silverlight application "Out of browser"Silverlight 应用程序“超出浏览器”中的 Windows 身份验证 (NTLM)
【发布时间】:2011-03-29 18:58:08
【问题描述】:

我有一个网络应用程序,它在我的浏览器中运行没有任何问题。但是如果我在浏览器外安装它,当我尝试获取用户名时,userAccount 不在字典中:

private void Application_Startup(object sender, StartupEventArgs e) {
  string userId = e.InitParams["UserAccount"];//--> KeyNotFoundException
  //...
}

这很正常,因为我是通过在aspx网页中启动silverlight给它的:

<param name="InitParams" value="UserAccount=<%=HttpContext.Current.User.Identity.Name%>" />.

我需要它,因为有时在我的应用程序中,我需要显示当前登录的用户,并显示在我保存之前执行此操作或此操作的是此用户。

那么,一个问题:

  • 如何管理以确保用户有权加载应用程序并检索 userId。

非常感谢!

J4N

【问题讨论】:

    标签: .net silverlight iis authentication out-of-browser


    【解决方案1】:

    您应该能够像这样在客户端设置它:

    e.InitParams["UserAccount"] = Environment.UserName;
    

    这只是获取用户名,但与您显示的其他示例完全相同。

    但是,根据客户端提供的用户名设置权限绝不是一个好主意(本示例和您的示例都这样做)。

    【讨论】:

    • 你确定吗?因为我在环境变量中找不到任何“用户名”属性
    • 我不确定这是否可以用 silverlight 读取。对于您之前的担忧:我没有对此设置任何权限,它是负责该操作的服务器,但有时我需要显示当前用户,或者仅显示与当前对象相关的对象,但这只是人体工程学担心,从不安全。
    【解决方案2】:

    事实上这似乎是不可能的,我必须创建一个返回当前登录用户的 WCF 服务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-20
      • 1970-01-01
      • 1970-01-01
      • 2016-12-14
      • 1970-01-01
      • 2012-08-03
      • 1970-01-01
      相关资源
      最近更新 更多