Процедура входа в систему, которая не требует адреса электронной почты - PullRequest
0 голосов
/ 26 мая 2011

Меня попросили создать сайт, на котором пользователю не требуется указывать адрес электронной почты для входа в систему из-за проблем с конфиденциальностью.В прошлом я просто говорил, что это не рекомендуется, но в этом случае клиент строго запросил это.Сначала я хотел создать администраторов с электронной почтой, которые могли бы создавать общие логины (имя пользователя и пароль) и передавать их членам этой группы на сайте.Тогда, по крайней мере, у меня есть точка контакта для сброса логина и тому подобное.

Кто-нибудь имел опыт работы с такими ситуациями, когда ему приходилось создавать логины без использования адреса электронной почты?Не могли бы вы направить меня к любым соответствующим материалам или учебникам, которые могут быть полезны.Я использую MVC3 для разработки этого проекта.

1 Ответ

1 голос
/ 26 мая 2011

Надеюсь, я правильно понял ваш вопрос, и вы хотите ввести имя пользователя и пароль вместо адреса электронной почты и пароля.В этом случае вам потребуется реализовать собственный настраиваемый поставщик членства и настраиваемый поставщик ролей, если это необходимо.

Вы хотите проверить следующую страницу для получения дополнительной информации:

Пользовательский поставщик членства @Codeproject

РЕДАКТИРОВАТЬ Fyi вам не нужно реализовывать каждую функцию - просто реализовать те, которые вам нужны.Пользовательское членство провайдера из некоторых моих старых проектов 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; 
        }


    }
}
...