我被要求创建一个网站,由于隐私问题,用户无需提供登录电子邮件。在过去我简单地说这不可取,但在这种情况下,客户严格要求它。我最初的想法是潜在地创建管理员,其中包含可以创建通用登录(用户名和密码)的电子邮件,并将其传递给站点上的组成员。那么至少我有一个登录重置的接触点等。
有没有人有过这种情况的经验,他们需要在不使用电子邮件地址的情况下创建登录?你能指导我学习任何可能有用的相关材料或教程吗?我正在使用MVC3来开发这个项目。
答案 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;
}
}
}