登录程序不需要电子邮件地址

时间:2011-05-26 11:41:28

标签: asp.net-mvc-3 login asp.net-membership

我被要求创建一个网站,由于隐私问题,用户无需提供登录电子邮件。在过去我简单地说这不可取,但在这种情况下,客户严格要求它。我最初的想法是潜在地创建管理员,其中包含可以创建通用登录(用户名和密码)的电子邮件,并将其传递给站点上的组成员。那么至少我有一个登录重置的接触点等。

有没有人有过这种情况的经验,他们需要在不使用电子邮件地址的情况下创建登录?你能指导我学习任何可能有用的相关材料或教程吗?我正在使用MVC3来开发这个项目。

1 个答案:

答案 0 :(得分:1)

我希望我理解你的问题,并希望使用用户名和密码而不是电子邮件地址和密码来实现登录。 在这种情况下,如果需要,您必须实现自己的自定义成员资格提供程序和自定义角色提供程序。

您想查看以下页面以获取更多信息:

Custom Membership Provider @ Codeproject

EDIT 你不需要实现每个功能 - 只需实现你需要的功能。 我的一些旧版mvc3项目的自定义成员资格提供程序。删除了大多数未实现的函数以获得更短的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;

namespace Domain.Models
{
    public class PlatformMembershipProvider : MembershipProvider
    {
        public SalesModelContainer ******** = new SalesModelContainer();

        public override bool ChangePassword(string username, string oldPassword, string newPassword)
        {
            var user = ********.UserSet.Single(s => s.Email == username);
            if (user.Password == oldPassword)
            {
                user.Password = newPassword;
                return true;
            }
            else
            {
                return false;
            }
        }

        public override string GetUserNameByEmail(string email)
        {
            var user = ********.UserSet.Single(s => s.Email == email);
            return user.CompanyName;
        }

        public override void UpdateUser(System.Web.Security.MembershipUser user)
        {
            throw new NotImplementedException();
        }

        //TODO: use MD5 for password encryption
        public override bool ValidateUser(string username, string password)
        {
            bool returnValue;
            var user = ********.UserSet.SingleOrDefault(s => (s.Email == username) && (s.Password == password));
            if (user != null)
                returnValue = true;
            else
                returnValue = false;

            return returnValue; 
        }


    }
}