Tag: asp.net membership

需要将Asp.Net Identity(RTM)用户ID从nvarchar(128)更改为uniqueidentifier

使用Asp.Net Identity 1.0(RTM版本)。 默认实现创建一个AspNetUsers表。 Id列类型为nvarchar(128)。 在创建数据库和表时,我只想将User Id的类型更改为uniqueidentifier而不是nvarchar(128)。 我在OnModelCreating覆盖中使用.HasColumnType(“uniqueidentifier”)尝试了这个…但是它会抛出错误。 微软表示这很容易……但我倾向于不同意…… http://www.asp.net/identity/overview/getting-started/introduction-to-aspnet-identity 由于您控制数据库架构,因此很容易执行常见任务,例如更改表名或更改主键的数据类型。 因此,根据他们非常简短和完全非技术性的文档,这似乎是一个常见的任务,改变主键的数据类型……但似乎没有任何简单的事情。 请帮忙。

使用表单身份validation获取当前用户ID(而不是名称)?

题: 我正在玩表单身份validation和我自己的自定义成员资格提供程序。 从我看到的,我可以通过以下方式获得当前的FormsIdentity: System.Web.Security.FormsIdentity veryFunny= (System.Web.Security.FormsIdentity) System.Web.HttpContext.Current.User.Identity; 我可以让当前的会员用户这样做: var UserFromDb = System.Web.Security.Membership.GetUser(); 然后我可以通过这样做获得用户ID: var MyUserId = UserFromDb.ProviderUserKey; 我觉得有趣的是,当我调用Membership.GetUser()时,它会在成员资格提供程序中调用此方法 public override MembershipUser GetUser(string username, bool userIsOnline) 其中查找数据库中的用户信息。 所以我认为.NET框架内部就是这样 GetUser(System.Web.HttpContext.Current.User.Identity.Name, whatever); 它根据USERNAME从数据库中获取用户信息。 我发现这令人不安,首先是因为当我必须查找整个用户只是为了获得用户ID时,它对性能有害。 其次,令人不安的是我必须查找用户ID,因为这不是我所期望的。 第三,它令人不安,因为用户名可以在程序过程中更改,并且让用户必须注销并登录才能这样做是无稽之谈。 现在,对我来说,这个设计听起来像废话。 但话说回来,微软还使用应用程序名称,组名和用户名作为主键,这也没有多大意义。 所以我的问题在这里: 没有数据库查找的方法来获取用户ID? 或者整个会员提供者的想法是如此被设计破坏? 如果它坏了: 我看到FormsIdentity有一个名为userdata的字符串属性。 如果是这样,我如何使用ASP.NET来保存用户ID?

FormsAuthentication和WebSecurity之间的区别

我正在探索ASP.NET MVC的可能性,在Visual Studio的示例Web应用程序中,WebMatrix.WebData.WebSecurity用于成员资格(创建帐户,并指定用户登录以查看特定页面等)。 但经过一些搜索后,我发现还有一个可用于成员资格的System.Web.Security.FormsAuthentication类。 有谁知道这两个class级之间的差异/利弊? 何时使用WebSecurity以及何时使用FormsAuthentication? (也许是FormsAuthentication的一个明显例子) 提前致谢

如何设置asp.net认证的属性

我的web.config文件中有以下设置。 如果用户没有登录,它基本上限制了对页面的访问。如果我不想使用asp登录控件或实现成员资格提供程序,我如何告诉’asp loginregister.aspx页面已授权请求如果我想实现自己的登录系统? 谢谢。

如何在ASP.NET中允许多种身份validation方法?

我正在构建一个新的ASP.NET MVC应用程序(在C#中),其中一个要求是创建一个新的成员数据库。 为此,我们需要角色来管理不同类型的成员和配置文件,以管理附加到每个成员的其他元数据。 到目前为止,只需使用标准的MembershipProvider,RoleProvider和ProfileProvider作为.NET Framework的一部分提供。 但是,问题是我想允许不同的身份validation方法。 我希望帐户和登录凭据具有一对多关系(一个帐户可以附加一些登录凭据)。 例如,用户可能同时将OpenID和ActiveDirectory帐户附加到其帐户。 但是,在尝试了几种方法之后,我们选择了MembershipProvider路线(解释了它是如何实现的,如下所示)。 我的问题是,人们之前是如何做到这一点的,以及人们如何建议我接近它? 它似乎是在很多网站上实现的东西,但在这里的搜索并没有返回任何可靠的东西。 编辑:在隔夜和今天早上四处寻找好几个小时之后 – 我仍然没有意识到屠杀一个会员提供者将是最简单的选择。 有多个MembershipProviders会产生相同的效果吗? BOUNTY EDIT:没有回复,我假设没有更好的解决方案,我发布的答案。 这是真的吗? 我正在提供奖励,试着看看是否有人对此有任何进一步的想法以及是否有更好的选择。 BOUNTY ACCEPT EDIT:我认为WIF是下面接受的答案,对于.NET 4版本和其他版本可能适用于3.5。 除此之外,也许一个被屠杀的MembershipProvider或改编的可能仍然是相关的。

在调用“WebSecurity”类的任何其他方法之前,必须调用“WebSecurity.InitializeDatabaseConnection”方法

每次我用Visual Studio重新启动Debugging时,我都会遇到这个怪异的错误: 在调用“WebSecurity”类的任何其他方法之前,必须调用“WebSecurity.InitializeDatabaseConnection”方法。 此调用应放在站点根目录中的_AppStart.cshtml文件中。 但这是每次,当我将应用程序部署到prod时。 我随后在这里得到了这个错误。 我把正确的标签: [Authorize(Roles = “admin”)] [InitializeSimpleMembership] public class IndexController : Controller 到控制器,这是filter的方式。 它只是不想工作。 using System; using System.Data.Entity; using System.Data.Entity.Infrastructure; using System.Threading; using System.Web.Mvc; using MeetingTaskManagement.Models; using WebMatrix.WebData; namespace MeetingTaskManagement.Filters { [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] public sealed class InitializeSimpleMembershipAttribute : ActionFilterAttribute { private static SimpleMembershipInitializer _initializer; […]

使用Castle在自定义成员资格提供程序中注

到目前为止,在阅读有关注入自定义会员提供商的可能性时,我发现了两种可能的方法: 一个是以下内容: http : //bugsquash.blogspot.com/2010/11/windsor-managed-membershipproviders.html 在这里,作者基本上建议注册你的自定义提供程序,然后有一个相当可疑的windsor适配器的成员资格(我真的不喜欢它使用从HttpApplication获取的容器实现你的提供者的方式,它最终包含windsor适配器)。 这是另一个类似的选项: http : //code.google.com/p/webdotnet/source/browse/trunk/Steeg.Framework/Web/Security/MemberShipProvider.cs?r = 2 你只需重写Initialize()并在那里手动实例化依赖项。 至少在第一个中,您不需要手动实例化依赖项(除了提供程序本身)。 还有一些还建议使用某种服务定位器(MVC或其他) 然后我遇到了ninject注入依赖于Membership.Provider上的属性,而不是像_kernel.Inject(Membership.Provider)那样容易。 这更接近我想要的东西,保持构图根本概念,这使我首先使用DI。 如何使用城堡获得类似的结果? 更新:显然这有生命周期管理的问题。 使用Ninject将存储库注入自定义成员资格提供程序 我应该选择#1选项吗? 至少我自己实例提供者。 因此,生命周期管理不应成为问题。

asp.net标识中的用户名validation消息问题

我在我的项目中使用新的会员系统asp.net身份。 我想使用电子邮件地址作为用户名,是的,我已经看过这些问题了: 配置Microsoft.AspNet.Identity以允许电子邮件地址作为用户名 ASP.NET标识使用电子邮件而不是用户名 我知道如何使用电子邮件作为用户名。但我有另一个问题,validation错误消息: Name xxxxxxxxx@xxxx.com is already taken. 当用户尝试使用现有的电子邮件地址注册时,会出现此消息。因此,我想提供错误消息,而不是此错误消息: User with the given email address already exist. 那我怎么能在Asp.Net标识中做到这一点?

具有租户特定角色的ASP.NET多租户应用程序

我们有一个多租户ASP.NET应用程序。 到目前为止,租户已经相互隔离,但现在我们有代理商管理多个租户,并希望能够通过一个用户帐户管理所有租户。 我正试图找出实现这一目标的最佳方法,希望对我们正在使用的现有技术没有太大的改变。 相关技术细节: 成员和角色的AspNetSqlMembershipProvider C#4.0(很快将是4.5) 表单身份validation aspx和MVC(v3)页面 假设有100个或更多租户,因此任何解决方案都需要支持 我相信这些要求与SQL Server的安全模型非常相似。 我们有一组登录,代表可以登录系统的所有用户。 用户应该能够被赋予一个或多个数据库(租户)的角色。 示例:用户Bob在公司A中具有管理员角色,但在公司B中只有用户角色。我们公司的员工也有“sysadmin”角色,允许我们访问任何租户以及创建/删除租户等专业管理权限等 我已经对各种库,框架等进行了大量研究,但我没有找到任何令人信服的证据表明其他库或框架将比我们现有的更好。 所以我现在正在考虑如何让Sql Membership provider做我想做的事情,除非有人能指出我更好的方向。 我也不确定我是否知道在此搜索的最佳条款。 我有2个选项我正在考虑: 只向会员提供者添加少量角色,并处理会员提供者之外的“当前用户在此租户中是否具有此角色”的所有问题。 成员资格提供程序将用于处理对系统的基本访问。 将租户特定角色添加到成员资格提供者。 我们将拥有(角色数)x(租户数)在系统中的总角色。 每个新租户都会向系统添加另一组角色,例如“租户A:管理员”,“租户A:用户”等。需要一些额外的表来管理关系以及可能需要一些自定义代码以确保访问权限从成员资格提供者请求正确的特定于租户的角色。 这些选项中的任何一个都不错吗 或者我应该到别处寻找支持吗?

如何在ASP.NET MVC应用程序中附加自定义成员资格提供程序?

如何将自定义成员资格提供程序与ASP.NET MVC [Authorize()]属性绑定? 我已经通过一些关于如何创建自定义成员资格提供程序的教程进行了大肆宣传,但是我发现的有关如何将其连接到应用程序的所有信息似乎都围绕着常规的ASP.NET WebForms应用程序,这些应用程序看起来像是一块蛋糕 我对即将在ASP.NET MVC中发生的大量“魔法”感到失望,这很棒,但我习惯以WebForms方式插入内容,因此这种“它只是工作”的方法有点像为我弯腰。 我怎么知道什么时候我应该做重物,或者我应该只依靠它通过魔法发生? 我在哪里将我的提供商绑定到MVC应用程序? 我是否正确地假设它是通过[Authorize()]属性调用的,一旦我把它连接起来?