【问题标题】:FBA Display Name with custom membership provider, WSS 3.0具有自定义会员资格提供商的 FBA 显示名称,WSS 3.0
【发布时间】:2010-01-19 02:03:15
【问题描述】:

我有一个 WSS 3.0 站点(没有 MOSS),它使用自定义表单身份验证成员资格提供程序和角色管理器,针对远程 Web 服务对用户进行身份验证(尽管目前它适用于最小起订量数据)。我的问题是:登录时用户的姓名显示为他们的登录名,而不是他们的全名。

我设置了我的提供程序,以便同时存储用户名和全名,并且当被询问(例如 GetUserByUsername)时,任何一个值都将返回一个以全名作为用户名的 MembershipUser 对象。这样做的效果是,在共享点人员选择器中,输入用户用户名会导致自动完成将其转换为他们的全名,就像标准 Windows 身份验证所做的那样。

但是,对提供程序进行断点,当登录到站点时,仅调用提供程序上的 ValidateUser 方法,它们绝不是对我修改过的 MembershipUser 对象的请求。查看内容数据库中的 UserInfo 表,将创建一个新条目,并将用户名 (tp_title) 设置为其登录名。

没有对数据库运行直接查询(我不会这样做)我不确定如何为自定义 FBA 用户提供用户友好的用户名。帮助将不胜感激。

【问题讨论】:

    标签: .net sharepoint moss wss-3.0 fba


    【解决方案1】:

    没关系,找到解决方法。在我的自定义成员资格提供程序的 validate user 方法中,以下代码允许我设置 name 属性。这在使用数千名用户时可能无法扩展,但对于小型用户群来说应该没问题:

    public override bool ValidateUser(string username, string password)
        {
            if (moqUsers.Any(user => user.Username.Equals(username) && user.Password.Equals(password)))
            {
                SPContext.Current.Site.RootWeb.AllowUnsafeUpdates = true;
                var user = SPContext.Current.Site.RootWeb.EnsureUser(username);
                user.Name = RetrieveUserFullName(username);
                user.Update();
                SPContext.Current.Site.RootWeb.AllowUnsafeUpdates = false;
                return true;
            }
            return false;
        }
    

    此外,可能需要对上面的 rootweb 进行很好的处理。

    【讨论】:

    • 我在将用户添加到 SharePoint 时执行相同的步骤。
    【解决方案2】:

    我在ValidateUser 期间尝试了很多方法来让上面的代码正常工作,我认为这是更新UserInfo.tp_Title 的好时机(除了你每次用户登录时都会更新它的事实在,但是,嘿,你要做什么?)。

    但是,我无法让EnsureUser 正常工作(也尝试过AllUsers[])而不会引发错误。尝试在SPSecurity.RunWithElevatedPrivileges 和所有的匿名委托中执行。没有骰子。

    不过,我认为这完全是正确的想法,我只想分享一下我的工作方式是通过调用 SP UserGroup 网络服务 (/_vti_bin/usergroup.asmx),调用 @ 987654328@。对我来说,确切的方法签名看起来像:

    UserGroup.UpdateUserInfo("custommembershipprovidername:" + username, TheFullName,
     emailAddress, string.Empty)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-17
      相关资源
      最近更新 更多