0

我对 asp.net 中的授权/会员资格相对较新,所以如果我问任何愚蠢的问题,请原谅。我一直在查看许多示例以在 .net 中实现自定义成员资格提供程序(在 stackoverflow、codeproject、devX 和 www.asp.net 中)并基于此进行编码,但不知何故无法使其正常工作。

我的要求 - 我们的组织大量使用惠普的质量中心(QC),我正在开发一个 asp.net 应用程序,它的登录页面将使用 QC'a API 来验证用户。我还有一个 SQL 数据库,我将在其中存储已注册到我的应用程序的 QC 用户(只需将 QC 用户 ID 存储在 DB 中,而不是密码,就像我说的,密码验证是使用 QC API 完成的)。我的数据库中将有一个用户角色表来定义注册用户的角色。

为什么要使用“会员资格”而不是一些简单的“表单身份验证”——因为也许将来我想解耦 QC 身份验证。
因此,我从第一步开始 - 开发自定义成员资格类(名为 AutoCenterMembershipProvider)和登录页面。我只需要 validateuser 方法。以下是我开始使用的方法:
1. 向用户询问 QC 用户 ID/密码,用户单击“验证”按钮
2. 登录页面背后的代码 -“验证”按钮的 onClick 方法 - 检查是否在 SQL 数据库中找到用户并如果找到,则使用 QC API 验证用户 id-password
3. 登录页面上的第二组控件已启用 - 要求用户选择要登录的 QC 域和项目用户。域和项目下拉列表的选项也可以在验证用户后使用 QC API 获得。用户选择这些并单击登录按钮
4. 在登录按钮单击 - 调用 Membership.ValidateUser(objQCSession.UserName, objQCSession.Password)。由于用户已经使用 QC api 进行了验证,为简单起见,我只从 Membership.ValidateUser 的自定义实现中返回“true”。然后我调用 -FormsAuthentication.RedirectFromLoginPage(obj_ACUser.QCSession.UserName, True)将用户引导到 web.config 中提供的应用程序默认页面 - app_FAs.aspx。

问题是 - 在用户被重定向到 app_FAs.aspx 页面后,它会将用户引导回登录页面。我试图找出错误或丢失的部分。

Web.config 如下所示:

<authentication mode="Forms">
  <forms loginUrl="~\Pages\Login.aspx" defaultUrl="App_FAs.aspx"></forms>
</authentication>
<authorization>
  <deny users="?"/>
</authorization>
<membership defaultProvider="AutoCenterMembershipProvider">
  <providers>
    <clear/>
    <add name="AutoCenterMembershipProvider" 
         type="CustomMembership.Models.AutoCenterMembershipProvider"
         enablePasswordRetrieval="false"   enablePasswordReset="false" 
         requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
         maxInvalidPasswordAttempts="100"  minRequiredPasswordLength="100"
         minRequiredNonalphanumericCharacters="0" 
         passwordAttemptWindow="100"   applicationName="/" />
  </providers>
</membership>

和 customMembership 类就像:

Public Class AutoCenterMembershipProvider
    Inherits System.Web.Security.MembershipProvider

    Public Overrides Function ValidateUser(ByVal username As String, ByVal password As String) As Boolean
        Return True
    End Function

其余所有成员都“未实施”

任何帮助,指向缺失部分的指针,非常感谢错误,在此先感谢

验证按钮点击代码

Private Sub btn_Authenticate_Click(ByVal sender as Object, ByVal e As   System.Web.UI.ImageClickEventArgs) Handles btn_Authenticate.click
   objQCSession = Session("QCUserSession")
   If Membership.ValidateUser(objQCSession.UserName, objQCSession.Password) then
     FormaAuthentication.RedirectFromLoginPage(objQCSession.UserName, True)
   End if
End Sub
4

1 回答 1

0

当前,第二步 -btn_Authenticate_Click方法 1 - 只是分配FormAuthenticationTicket给 cookie,并将用户重定向到app_FAs.aspx页面。它并不真正需要自定义会员提供者的功能。

如果我正确理解你的问题,我会改变这样的逻辑。

1)在为QC验证用户后,FormAuthenticationTicket以相同的方法创建。

FormsAuthentication.SetAuthCookie("UserName", true|false);

2)btn_Authenticate_Click(做某事并)将用户重定向到app_FAs.aspx

您甚至不需要自定义成员资格提供程序。如果您想使用自定义成员资格提供程序,您可以在第一步中实施(不是在第二步中)。

于 2013-03-29T18:29:01.227 回答