为AuthenticationService创建没有用户名和密码的ObjectContext

时间:2010-07-15 15:51:50

标签: silverlight entity-framework wcf-ria-services

我在VS2010中使用过Silverlight BusinessApplication模板。我已经将AuthenticationService更改为使用我自己的身份验证方法 - 要求是用户使用SQL登录系统登录系统(公司中没有AD)。

登录时,我构建一个SQLConnection,尝试打开它,然后从User表中获取它们的详细信息(友好名称,角色等)。然后我存储他们输入的用户名和密码,以及他们通过DomainService访问数据库的任何时候我覆盖CreateObjectContext并将他们输入的用户名和密码插入数据库。

我已将AuthenticationService更改为继承自IAuthentication和LinqToEntitiesDomainService,主要用于访问User表。

在用户登录之前启动应用程序时遇到问题.BusinessApplication模板附带的LoginStatus控件具有以下行:

private readonly AuthenticationService authService = WebContext.Current.Authentication;

这会导致我的AuthenticationService的构造函数被调用,并且作为其中一部分,尝试创建ObjectContext但用户尚未登录,因此我没有用户名+密码添加到连接字符串中。对于开发。目的我只是使用我的用户名和密码,如果没有登录,但我现在需要解决这个问题。

关于我如何解决这个问题的任何想法?据我所知,我的选择是:

  • 不要使用EF(我宁愿使用它,因为我的数据访问的其余部分是使用EF完成的。)
  • 在数据库中创建一个虚拟用户,如果没有登录,则将其用作凭据(不理想)。

还有另一种方法吗?在构建我的AuthenticationService时阻止调用CreateObjectContext?

任何帮助/建议表示赞赏。

更新

我将AuthenticationService更改为继承自DomainService而不是LinqToEntitiesDomainService,并使用SqlDataReader获取所需的用户数据,但我仍然对是否有其他方式感到好奇。

1 个答案:

答案 0 :(得分:0)

请遵循以下示例:

http://code.msdn.microsoft.com/Custom-Authentication-96ca3d20/view/Reviews

请注意,如果您使用DbContext而不是ObjectContext,则会有DbDomainService。