我正在构建我的第一个Silverlight 3 + RI服务应用程序,需要一些帮助
它将部署在受控企业内部网,100%Windows客户端中。我从Silverlight业务应用程序模板开始。
这些是我的要求:
我在默认的业务应用程序模板中修改了以下内容:
通过这些修改,我解决了需求#1(获取当前登录的用户)。但是当我检查RiaContext.Current.User
时,我无权访问AD中的其他属性,例如组成员身份。我怎样才能达到我的其他要求?
感谢您的帮助。
答案 0 :(得分:4)
为了做到这一点,您必须编写自己的配置文件提供程序,然后修改用户类以包含这些配置文件属性,然后您可以访问这些属性。
请查看RIA服务概述文档第13.3页,如果您需要任何帮助,请与我们联系。
我们正处于实施RIA服务应用程序的中间,并编写了我们自己的自定义会员资格提供商和个人资料提供商,所以如果您需要帮助,请告诉我。
答案 1 :(得分:3)
以下是我在BusinessApplicationTemplate提供的AuthenticationService上攻击它的方法。
[EnableClientAccess]
public class AuthenticationService : AuthenticationBase<User> {
protected override User GetAuthenticatedUser(System.Security.Principal.IPrincipal principal)
{
User user = base.GetAuthenticatedUser(principal);
Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
SystemWebSectionGroup grp = (SystemWebSectionGroup)config.GetSectionGroup("system.web");
AuthenticationSection auth = grp.Authentication;
if (auth.Mode == AuthenticationMode.Forms)
{
}
else if (auth.Mode == AuthenticationMode.Windows)
{
string[] a = user.Name.Split('\\');
System.DirectoryServices.DirectoryEntry ADEntry = new System.DirectoryServices.DirectoryEntry("WinNT://" + a[0] + "/" + a[1]);
string Name = ADEntry.Properties["FullName"].Value.ToString();
user.Name = Name;
}
return user;
}
}
答案 2 :(得分:3)
嘿大家,MSDN上有一篇新文章,我现在正在研究它。
http://msdn.microsoft.com/en-us/library/ee707353(VS.91).aspx