Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 ASP.NET MVC3/用户注册、成员资格、角色和权限_Asp.net Mvc 3_Ef Code First - Fatal编程技术网

Asp.net mvc 3 ASP.NET MVC3/用户注册、成员资格、角色和权限

Asp.net mvc 3 ASP.NET MVC3/用户注册、成员资格、角色和权限,asp.net-mvc-3,ef-code-first,Asp.net Mvc 3,Ef Code First,在我的应用程序中,我需要注册用户。用户可以是三个用户中的任意一个:管理员、客户端和普通用户。它们有不同的属性(管理员可能只有姓名,客户可能有公司地址等等)。默认的MVC会员制是可以的,但如何扩展它以在注册期间注册更多信息?或者我应该使用自定义会员资格 我需要使用clientID或generalID记录客户和普通用户。您可以自定义默认的配置文件提供程序或创建自己的。。。遵循此参考 您也可以为web.config中的任何内容向配置文件添加新属性您可以自定义默认配置文件提供程序或创建自己的。。。遵循

在我的应用程序中,我需要注册用户。用户可以是三个用户中的任意一个:管理员、客户端和普通用户。它们有不同的属性(管理员可能只有姓名,客户可能有公司地址等等)。默认的
MVC
会员制是可以的,但如何扩展它以在注册期间注册更多信息?或者我应该使用自定义会员资格


我需要使用
clientID
generalID
记录客户和普通用户。您可以自定义默认的配置文件提供程序或创建自己的。。。遵循此参考


您也可以为web.config中的任何内容向配置文件添加新属性

您可以自定义默认配置文件提供程序或创建自己的。。。遵循此参考


您也可以为web.config中的任何内容向配置文件添加新属性

我强烈建议您创建自己的成员角色。它非常简单,没有什么比拥有自己的实现更灵活的了

这是我不久前制作的一段视频,向您展示了如何一步一步地实现这一目标:

其要旨是,你创造自己的属性,创造自己的角色;一路上保护每个控制器,甚至是单独的动作方法

这种方法的一个缺点是,您可以确定用户在系统中的角色,但不能确定角色在系统中可以做什么。这有意义吗


如果您需要编辑角色在运行时可以执行的操作,还有其他选择。

我强烈建议您创建自己的成员角色。它非常简单,没有什么比拥有自己的实现更灵活的了

这是我不久前制作的一段视频,向您展示了如何一步一步地实现这一目标:

其要旨是,你创造自己的属性,创造自己的角色;一路上保护每个控制器,甚至是单独的动作方法

这种方法的一个缺点是,您可以确定用户在系统中的角色,但不能确定角色在系统中可以做什么。这有意义吗

如果需要编辑角色在运行时可以执行的操作,还有其他选择

默认的MVC成员计划是可以的,但是如何扩展它呢 要在注册期间注册更多信息?或者我应该使用 定制会员资格

我认为太多的人,包括你自己在内,期望从默认的ASP.NET成员资格提供商那里得到太多。它从来没有被设计来处理特定于应用程序的事情,比如你的客户为哪家公司工作,你的管理员的名字,等等。它的主要用途是存储用于身份验证的密码

当然,密码需要链接到用户名,这样就可以有两个密钥的身份验证对。有时,您还需要用户的电子邮件地址(当它与用户名不同时),以便联系用户了解其密码但不要将用户的任何其他信息存储在会员存储中。将其存储在应用程序数据库中

为了在应用程序和成员资格提供程序之间联接数据,请在一个数据库表中使用成员资格提供程序的用户名或ProviderKey作为列。最终得到两个没有明确关联的实体。您甚至可以在应用程序数据库之外的单独数据库中实现SqlMembershipProvider。即使它们位于同一数据库中,也要避免在任何提供程序表和应用程序表之间使用外键。这就搅乱了你所拥有的东西和你“外包”给会员提供商的东西之间的关系

您最终得到了用户的两个物理隔离表示。一个是MembershipProvider,它包含用户的密码。另一个是您的应用程序,它包含其他特定于业务的详细信息。这两者仅在应用程序中逻辑关联。使用成员资格API对用户进行身份验证后,其用户名和/pr ProviderKey将可用于您的应用程序。然后,您可以使用该数据块查询应用程序数据库并获取其他详细信息。在这里,您可以放置您提到的
clientID
generalID
之类的内容

如果您查看System.Web.Security.Member*API,应该会更清楚。它可以很好地将用户与密码和其他与密码重置相关的信息(如电子邮件地址、问题和答案等)联系起来。因此,只需将密码提供者外包,并依靠您的应用程序来完成重要的工作

默认的MVC成员计划是可以的,但是如何扩展它呢 要在注册期间注册更多信息?或者我应该使用 定制会员资格

我认为太多的人,包括你自己在内,期望从默认的ASP.NET成员资格提供商那里得到太多。它从来没有被设计来处理特定于应用程序的事情,比如你的客户为哪家公司工作,你的管理员的名字,等等。它的主要用途是存储用于身份验证的密码

当然,密码需要链接到用户名,这样就可以有两个密钥的身份验证对。有时,您还需要用户的电子邮件地址(当它与用户名不同时),以便联系用户了解其密码但不要将用户的任何其他信息存储在会员存储中。将其存储在应用程序数据库中

为了在应用程序和成员资格提供程序之间联接数据,请在一个数据库表中使用成员资格提供程序的用户名或ProviderKey作为列。最终得到两个没有明确关联的实体。您甚至可以在应用程序数据库之外的单独数据库中实现SqlMembershipProvider。即使它们在同一个数据库中,也要避免使用外键b