我正在使用标准的.NET成员资格提供程序,并且我认为我会看到是否有人可以对它发表意见.
调用ValidateUser返回true或false.现在,由于该方法接受用户名和密码,因此可以推断返回结果将反映无效的用户名或密码.然而,如果我们进一步研究它,我们发现它也在检查IsLockedOut和IsApproved.
public override bool ValidateUser (string username, string password)
{
MembershipUser user = GetUser (username, false);
/* if the user is locked out, return false immediately */
if (user.IsLockedOut)
return false;
/* if the user is not yet approved, return false */
if (!user.IsApproved)
return false;
......
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,我想以自己的方式使用IsApproved.简单地滚动我自己的提供者是行不通的,因为我仍然受限于bool结果.创建用户可以获得我们需要的所有信息,那么为什么不使用ValidateUser?我错过了什么吗?
我有一个使用Membership Provider的ASP.NET MVC站点.我无法测试一些功能,包括注册新用户.
ASP.NET网站没有办法删除/删除注册用户,因此在我的测试项目(WatiN with NUnit)中,我试图通过调用Membership.DeleteUser()来删除测试用户帐户.然后我意识到我不能使用它,因为我无法在我的NUnit项目(在visual studio中)中使用web.config配置成员资格提供程序.
如何在不使用ASP.NET的情况下配置成员资格提供程序?
我正在开发一个具有严格安全和审计要求的Web应用程序(HIPPA的东西).因此,我们正在评估是否应该建立自己的自定义成员资格和角色提供商,或者是否有可以购买的商用组件.
如果您对第三方Asp.Net会员和角色提供商有任何经验(好的或坏的),请分享您的想法.
更新:我们已开始评估以下第三方组件:
Port Sight Secure Access:http: //www.portsight.com/Products.aspx? AliasPath = Products/Secure Access/Secure Access&CultureAlias = en-US
和Visual Guard:http: //www.visual-guard.com/
有人知道任何其他第三方组件或有这些经验吗?
我为我的客户创建了一个会员登录系统,现在他们不希望用户在创建新密码时使用他最后5个密码中的一个.
这是内置的东西还是我如何实现?
我编写了一个自定义成员资格提供程序,我想针对它运行一些单元测试.但是,每当我创建一个"Test"项目时,我都无法访问MembershipCreateStatus.您可能知道这是CreateUser的out参数上的类型.
我正在使用VS2010 Ultimate并且似乎无法理解为什么,即使我添加对System.Web的引用(并且为了善意地引用成员资格提供程序项目中的所有库),我也无法访问它.
有什么东西阻止它在测试项目中使用吗?
我的目标是3.5框架.
谢谢!
我对.Net中的MembershipProvider有一些问题,我一直无法找到明确的答案.
谢谢你的反馈!
我目前正在重新编写.Net中的整个网站.当前网站使用foxpro编写,使用自定义逻辑,验证规则和Sql server表来存储和验证用户.
我想使用会员提供商,但我有一个主要问题,我不知道如何克服.
新网站和旧网站都必须共享用户和凭据.用户必须能够在过渡阶段使用这两个站点,而无需单独更新其配置文件.
在不破坏现有系统的情况下实施成员资格提供商的最佳方法是什么?
我是否必须使用会员提供商提供的所有表格,视图,程序等?
我的逻辑有缺陷吗?会员提供者值得吗?
任何教程或视频链接都非常感谢.
我们已经开始使用NuGet的Microsoft.AspNet.Providers.Core包中提供的更新的System.Web.Providers.我们开始迁移现有用户,发现性能下降,然后发生死锁.这个用户少于30,000(远远低于我们需要创建的1,000,000+用户).当我们调用提供程序时,它来自每个服务器上的多个线程,并且有多个服务器运行此相同的进程.这是为了能够尽快创建我们所需的所有用户,并模拟我们期望在其上线时看到的负载.
SQL Server为死锁生成的日志包含以下EF生成的sql:
SELECT
[Limit1].[UserId] AS [UserId]
, [Limit1].[ApplicationId] AS [ApplicationId]
, [Limit1].[UserName] AS [UserName]
, [Limit1].[IsAnonymous] AS [IsAnonymous]
, [Limit1].[LastActivityDate] AS [LastActivityDate]
FROM
(SELECT TOP (1)
[Extent1].[UserId] AS [UserId]
, [Extent1].[ApplicationId] AS [ApplicationId]
, [Extent1].[UserName] AS [UserName]
, [Extent1].[IsAnonymous] AS [IsAnonymous]
, [Extent1].[LastActivityDate] AS [LastActivityDate]
FROM
[dbo].[Users] AS [Extent1]
INNER JOIN [dbo].[Applications] AS [Extent2] ON [Extent1].[ApplicationId] = [Extent2].[ApplicationId]
WHERE
((LOWER([Extent2].[ApplicationName])) = (LOWER(@p__linq__0)))
AND ((LOWER([Extent1].[UserName])) = (LOWER(@p__linq__1)))
) AS [Limit1]
Run Code Online (Sandbox Code Playgroud)
我们手动运行查询,执行计划表示它正在执行表扫描,即使存在基础索引.原因是使用LOWER([Extent1].[UserName]).
我们查看了提供程序代码,看看我们是否做错了什么,或者是否有办法拦截或替换数据库访问代码.我们没有看到任何选项来执行此操作,但我们确实找到了LOWER问题的根源,.ToLower()正在调用列和参数.
return (from …Run Code Online (Sandbox Code Playgroud) 我正在创建一个MVC 4 applicationCode First方法并使用DefaultMembershipProvider和DefaultRoleProvider,但是我在将成员资格的用户表的外键制作到我的自定义表时遇到了问题,该表存储了一些用户的其他信息.请告诉我如何做到这一点.
请建议.
c# asp.net-mvc entity-framework membership-provider code-first
我浏览了10个文档,我正在做正确的事情,但我确信这是我遗漏的一个小细节.
我想使用自己的登录机制登录我的网站.登录机制位于Identity服务器中以进行单点登录.
但是我想在umbraco中使用公共访问功能,所以我在本地数据库中添加角色.通过更改配置文件
<roleManager enabled="true" defaultProvider="UmbracoRoleProvider">
<providers>
<clear />
<add name="UmbracoRoleProvider" type="rcsedWebServiceBLL.RCSEdRoleProvider" />
</providers>
</roleManager>
Run Code Online (Sandbox Code Playgroud)
并实施 RoleProvider
class RCSEdRoleProvider : RoleProvider
{
private string _ApplicationName = "UmbracoRoleProvider";
public override void AddUsersToRoles(string[] usernames, string[] roleNames)
{
throw new NotImplementedException();
}
public override string ApplicationName
{
get { return _ApplicationName; }
set
{
if(string.IsNullOrEmpty(value))
throw new ProviderException("ApplicationName Cacnnot be Empty");
if(value.Length > 0x100)
throw new ProviderException("provider application name too long");
_ApplicationName = value;
}
}
public override void CreateRole(string roleName)
{
throw …Run Code Online (Sandbox Code Playgroud) asp.net ×5
c# ×2
roleprovider ×2
.net ×1
.net-4.0 ×1
asp.net-mvc ×1
code-first ×1
membership ×1
passwords ×1
umbraco ×1
umbraco7 ×1
unit-testing ×1