在ASP.NET中使用自定义MembershipProvider而不使用Login控件

Ram*_*oni 8 asp.net authentication

我们有一个自定义MembershipProviderASP.NET.现在有两种可能的方案可以验证用户:

  1. 用户通过login.aspx输入用户名/密码登录页面.我使用了Login控件并将其与MyMembershipProvider.这工作得非常好.

  2. 身份验证令牌通过查询字符串中的某个URL从不同的网站传递.为此,我有一个重载MembershipProvider.Validate(string authenticationToken),实际上验证用户.在这种情况下,我们无法使用Login控件.现在如何MembershipProvider在不实际使用Login控件的情况下使用相同的方法验证用户?我试图Validate手动调用,但这不是用户签名.

这是我正在使用的代码片段

if (!string.IsNullOrEmpty(Request.QueryString["authenticationToken"])) {
    string ticket = Request.QueryString["authenticationToken"];
    MyMembershipProvider provider = Membership.Provider as MyMembershipProvider;
    if (provider != null) {
        if (provider.ValidateUser(ticket))
            // Login Success
        else
            // Login Fail
    }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*nHN 13

验证成功后,您需要通过调用FormsAuthentication.Authenticate来登录用户:http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.authenticate.aspx

编辑:这是FormsAuthentication.SetAuthCookie:http: //msdn.microsoft.com/en-us/library/twk5762b.aspx

此外,要将用户重定向到他想去的地方,请调用:FormsAuthentication.RedirectFromLoginPage:http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.redirectfromloginpage.aspx

链接文字