0

我想找到我的 LoginForm 的解决方案。

你能告诉我如何将我的模型(例如 Doctor.cs)加入 AccountModel.cs(MVC 应用程序安全 - 登录、注册或更改密码)。

    public ActionResult Register(RegisterModel model)
    {
        if (ModelState.IsValid)
        {
            // Attempt to register the user
            MembershipCreateStatus createStatus;
            Membership.CreateUser(model.UserName, model.Password, model.Email, "question", "answer", true, null, out createStatus);

            if (createStatus == MembershipCreateStatus.Success)
            {
                MigrateShoppingCart(model.UserName); 

                FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */);
                return RedirectToAction("Index", "Home");
            }
            else
            {
                ModelState.AddModelError("", ErrorCodeToString(createStatus));
            }
        }

这是Doctor.cs

公共类文档{

    public int DocId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string DoktorArtUrl { get; set;

}

帮帮我,我只想在创建帐户时,在数据库中创建新医生并在 MVC 安全中创建新用户。还告诉我如何进行配置文件视图(显示与安全性结合的 Docs 表中的值(在 LoGIN 之后)

PS。对不起我的英语不好

4

1 回答 1

1

我建议使用内置的轻量级 SimpleMembership 授权。它将自动提供 Asp.NET 成员表和特定的 UserProfile(或 Doctor)表来存储其他相关属性。

这来自 Visual Studio 的 MVC 4 Internet 应用程序模板开箱即用

我建议如下:

private static SimpleMembershipInitializer _initializer;
private static object _initializerLock = new object();
private static bool _isInitialized;

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    WebApiConfig.Register(GlobalConfiguration.Configuration);
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
    AuthConfig.RegisterAuth();

    LazyInitializer.EnsureInitialized(ref _initializer, ref _isInitialized, ref _initializerLock);
}

public class SimpleMembershipInitializer
{
    public SimpleMembershipInitializer()
    {
        using (var context = new UsersContext())
            context.UserProfiles.Find(1);

        if (!WebSecurity.Initialized)
            WebSecurity.InitializeDatabaseConnection("DefaultConnection", "Doctor", "DocId", "UserName", autoCreateTables: true);
    }
}

这是从 global.asax 中的 application_start 方法初始化 Internet 应用程序上的 simplemembership 授权。

如您所见,用于存储相关用户信息的表/类默认称为“UserProfile”。只需先通过实体框架代码更改“UserProfile”(帐户模型)类,它将自动调整您的数据模型。

给出的例子:

[Table("Doctor")]
public class UserProfile // can also be public class Doctor
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int DocId{ get; set; }
    public string UserName { get; set; }

    //other relevant properties
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string DoktorArtUrl { get; set;
    //etc
}

我希望这些信息可以为您指明正确的方向。如果您有任何意见,请随时提出。

于 2013-09-17T13:29:23.437 回答