Asp.net mvc 授权c#mvc

Asp.net mvc 授权c#mvc,asp.net-mvc,authorization,Asp.net Mvc,Authorization,我想创建一个c#mvc互联网应用程序,允许用户编辑自己的帐户。我想有诸如名字、姓氏、出生日期和地点等字段 我知道控制器的内置授权和Authorize属性。我目前在项目中有默认的AccountController 我只是不确定扩展每个用户的默认用户名和密码属性的最佳方法是什么?我应该将成员身份标识存储在包含其他属性的新类中,还是有更好的方法?我建议使用内置的轻量级SimpleMembership授权。它将自动提供Asp.NET成员资格表和特定的UserProfile表来存储其他相关的用户属性 这是

我想创建一个c#mvc互联网应用程序,允许用户编辑自己的帐户。我想有诸如名字、姓氏、出生日期和地点等字段

我知道控制器的内置授权和Authorize属性。我目前在项目中有默认的AccountController


我只是不确定扩展每个用户的默认用户名和密码属性的最佳方法是什么?我应该将成员身份标识存储在包含其他属性的新类中,还是有更好的方法?

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

这是来自VisualStudio的MVC4 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", "UserProfile", "UserId", "UserName", autoCreateTables: true);
    }
}
这是从global.asax中的application_start方法初始化internet应用程序上的simplemembership授权

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

举例如下:

[Table("UserProfile")]
public class UserProfile
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }
    public string UserName { get; set; }

    //other relevant properties
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set;}
    public Gender Gender { get; set;}
    //etc
}

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

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

这是来自VisualStudio的MVC4 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", "UserProfile", "UserId", "UserName", autoCreateTables: true);
    }
}
这是从global.asax中的application_start方法初始化internet应用程序上的simplemembership授权

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

举例如下:

[Table("UserProfile")]
public class UserProfile
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }
    public string UserName { get; set; }

    //other relevant properties
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set;}
    public Gender Gender { get; set;}
    //etc
}

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

假设您将MVC4与SimpleMembership一起使用(这是默认设置),则有两个基本选项

1) 正如Bastaspast所解释的,您可以扩展用户表。对于中小型应用程序来说,这是一条不错的路线

2) 您可以创建一个单独的UserProfile表,并通过它的UserId将它链接到您的用户表。这将会员资格(用户名、密码管理)与个人资料(姓名、年龄等)分开


我更喜欢选项2,但许多人喜欢选项1的简单性。您可以选择。

假设您将MVC4与SimpleMembership一起使用(这是默认设置),则有两个基本选项

1) 正如Bastaspast所解释的,您可以扩展用户表。对于中小型应用程序来说,这是一条不错的路线

2) 您可以创建一个单独的UserProfile表,并通过它的UserId将它链接到您的用户表。这将会员资格(用户名、密码管理)与个人资料(姓名、年龄等)分开


我更喜欢选项2,但许多人喜欢选项1的简单性。您可以选择。

否您不需要创建具有成员身份映射的新表。NETMVC提供了一些方法,您可以通过这些方法获取存储在数据库中的所有用户信息。您可以使用ASP.net成员资格的用户管理器类来获取记录。见示例:

            var _dbContext = new ApplicationDbContext();
            var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(_dbContext));
            UserStore<ApplicationUser> store = new UserStore<ApplicationUser>(_dbContext);

            var user = userManager.FindById(userId);

            user.FirstName ="Update the name";

            var result = store.UpdateAsync(user);
var\u dbContext=new ApplicationDbContext();
var userManager=newusermanager(newuserstore(_dbContext));
UserStore=新的UserStore(_dbContext);
var user=userManager.FindById(userId);
user.FirstName=“更新名称”;
var result=store.UpdateAsync(用户);

否您不需要创建具有成员身份id映射的新表。NETMVC提供了一些方法,您可以通过这些方法获取存储在数据库中的所有用户信息。您可以使用ASP.net成员资格的用户管理器类来获取记录。见示例:

            var _dbContext = new ApplicationDbContext();
            var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(_dbContext));
            UserStore<ApplicationUser> store = new UserStore<ApplicationUser>(_dbContext);

            var user = userManager.FindById(userId);

            user.FirstName ="Update the name";

            var result = store.UpdateAsync(user);
var\u dbContext=new ApplicationDbContext();
var userManager=newusermanager(newuserstore(_dbContext));
UserStore=新的UserStore(_dbContext);
var user=userManager.FindById(userId);
user.FirstName=“更新名称”;
var result=store.UpdateAsync(用户);

您需要创建ActionFilter属性并且选中的Edit userprofile ID与匹配

您需要创建ActionFilter属性并且选中的Edit userprofile ID与匹配

这与问题无关这与问题无关