代码之家  ›  专栏  ›  技术社区  ›  Fermin

在没有用户名和密码的情况下为AuthenticationService创建objectContext

  •  1
  • Fermin  · 技术社区  · 15 年前

    我在vs2010中使用了silverlight businessapplication模板。我已将authenticationservice更改为使用自己的身份验证方法-要求用户使用其sql登录名登录到系统中(公司中没有广告)。

    登录时,我构造一个sqlconnection,尝试打开它,然后从用户表中获取它们的详细信息(友好名称、角色等)。然后,我存储他们输入的用户名和密码,当他们通过一个domainservice访问db时,我覆盖createobjectcontext并将他们输入的用户名和密码插入db。

    我已将authenticationservice更改为继承自iaauthentication和linqtoentitiesdomainservice,主要用于访问用户表。

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

    private readonly AuthenticationService authService = WebContext.Current.Authentication;
    

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

    有什么办法让我避开这件事吗?据我所见,我的选择是:

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

    还有别的办法吗?在构造我的authenticationservice时是否阻止调用createobjectcontext?

    感谢任何帮助/建议。

    更新

    我将authenticationservice改为从domainservice继承,而不是从linqtoentiesdomainservice继承,并使用sqldatareader获取所需的用户数据,但我仍然好奇是否有其他方法。

    1 回复  |  直到 15 年前
        1
  •  0
  •   Shimmy Weitzhandler 500 - Internal Server Error    14 年前

    遵循以下示例:

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

    注意,在使用dbcontext的情况下有一个dbdomainservice,而不是objectcontext。

    推荐文章