我将用户数据存储在名为Users的MSSQL表中.我想要的是访问实际登录用户的所有用户数据(电子邮件,地址,电话,如果用户是订户等).
我不想使用配置文件,所以我决定使用自定义MembershipProvider(或者你知道一些更好,更少痛苦的方式吗?).
我不明白的是MembershipUser和Membership.如果我从MembershipProvider继承,则在重写方法中,我控制从数据库到数据库的访问数据.
但是如何使用MembershipProvider中的继承类?如果我想通过使用成员资格来验证用户,我应该这样做:
if(Membership.ValidateUser(string username, string password))
{
FormsAuthentication.RedirectFromLoginPage(string username, string password);
}
Run Code Online (Sandbox Code Playgroud)
但是从MembershipProvider继承的类在哪里?何时使用从MembershipUser继承的类?会员资格与会员资格提供者之间的关系是什么?
基本上我想在某人不属于我的属性中列出的角色时显示友好消息.目前我的应用程序只是将用户吐回到登录屏幕.我已经阅读了几篇关于创建一个仅扩展[AuthorizeAttribute]的自定义属性的帖子,但我认为必须有一些开箱即用的东西才能做到这一点?
有人可以指出我在正确的方向,我需要看到没有它将用户发送到登录表格,而只是拍摄他们"未授权"的消息?
嘿伙计们和gals在这里遇到一个小问题..我正在尝试使用MySql Connector 6.2.2.0作为成员资格和角色提供者..
我遇到的问题是: 无法初始化提供商.缺少或不正确的架构.
<authentication mode="Forms"/>
<roleManager defaultProvider="MySqlRoleProvider"
enabled="true"
cacheRolesInCookie="true"
cookieName=".ASPROLES"
cookieTimeout="30"
cookiePath="/"
cookieRequireSSL="false"
cookieSlidingExpiration="true"
cookieProtection="All" >
<providers>
<clear />
<add
name="MySqlRoleProvider"
type="MySql.Web.Security.MySQLRoleProvider, MySql.Web,
Version=6.2.2.0,Culture=neutral, PublicKeyToken=c5687fc88969c44d"
connectionStringName="mySQL"
applicationName="capcafe"
writeExceptionsToEventLog="true"
/>
</providers>
</roleManager>
<membership defaultProvider="MySqlMembershipProvider">
<providers>
<add connectionStringName="mySQL"
applicationName="capcafe"
minRequiredPasswordLength="5"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="false"
minRequiredNonalphanumericCharacters="0"
name="MySqlMembershipProvider"
type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, Version=6.2.2.0,
Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</providers>
</membership>
Run Code Online (Sandbox Code Playgroud)
以下是它似乎不喜欢的行:
Line 57: type="MySql.Web.Security.MySQLRoleProvider, MySql.Web,
Version=6.2.2.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"
Run Code Online (Sandbox Code Playgroud)
我在我的bin中引用了MySql.Web和MySql.Data!任何帮助解决这个问题将非常感谢
mysql membership security sqlmembershipprovider membership-provider
在asp.net 4中设计一个新的应用程序我必须决定如何在MS SQL数据库中使用MS SQL Membership API和我自己的数据.首先,我需要以更灵活的方式存储和访问用户配置文件数据,然后由Profile Provider支持.其次,我想链接其他用户相关信息(例如订单).
无论您在何处存储aspnetdb表(在单独的数据库中或与数据存储在同一数据库中),问题仍然存在于如何保持数据同步.
经过研究后,我看到了以下相关选项:
1.来自asp_Users的外键UserId(本教程中提出).
2.没有外键 - 使用交易(这里建议).
3.没有外键 - 使用自定义的AccountController(无论它是什么,这里建议).
4.将Membership UserId(uid)与自定义UserId(int)相链接的附加表.
5. ...
一方面,我喜欢第一个解决方案,因为它非常简单,并在官方的asp.net教程中提出.
另一方面,反对者非常合理地注意到使用外键打破了提供者的一般想法,这些提供者应该帮助分离关注点并且可以互换.但不幸的是,他们并没有深入了解实施细节,因此从相关性和易于实施的角度来估算这些建议并不容易.
那么解决这个问题的最佳选择是什么?此外,实现将如何?仅仅使用额外的ADO.NET或LINQ等代码是否足够,还是值得实现自定义成员资格和/或配置文件提供程序?
先感谢您.
membership asp.net asp.net-membership sqlmembershipprovider membership-provider
我们目前正在为瘦客户端簿记应用程序构建架构.它应遵循两个主要要求:
我们认为Asp.NET MVC 3是适合这项任务的平台.为了管理应用程序数据,我们选择了最新版本的Entity Framework - 它的批量数据提供程序和Code First功能可以为我们节省大量时间.
我们纠结的部分是用户/角色管理系统.我们应该有一些全局管理部分用于添加用户并授予他们访问模块的权限(只有全局管理员可以将用户添加到系统,不支持"街头人"注册)并且每个模块都有自己的管理部分和自己的管理员和角色.我们已经有数据模型以适当的方式存储我们需要的所有内容,但不知道如何从应用程序正确访问这些数据.
目前,我们看到两种可能的方法来解决此问题:
这两种方式都不优雅,对我们来说并不明显,而且选择哪种方式也不是一个简单的问题.我们也相信它可以是其他解决方案(原因可能会影响架构).因此,我们很高兴看到任何与此问题相关的建议.
我查看了成员资格提供程序文档,成员资格提供程序中应该有两个GetAllUsers方法(http://msdn.microsoft.com/en-us/library/system.web.security.membership.getallusers).
但是当我看到System.Web.Security公开的方法时(在
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Web.ApplicationServices.dll )
Run Code Online (Sandbox Code Playgroud)
它只有一种方法(具有分页功能的方法).
我在哪里可以找到从数据库返回所有用户的方法?似乎无法获取所有用户的列表或查找数据库中有多少用户.
--update
看着System.Web.Security,我发现SqlMembershipProvider定义如下:
public class SqlMembershipProvider : System.Web.Security.MembershipProvider
Run Code Online (Sandbox Code Playgroud)
但是这个类没有任何公共的GetAllUsers()方法.
如何访问其基本GetAllUsers方法?
model-view-controller asp.net-mvc asp.net-membership membership-provider asp.net-mvc-3
可能重复:将
ASP.NET成员资格数据库迁移到SQL Azure
如何在sql azure数据库上运行aspnet_regsql?通过导出所有数据库对象,我努力工作.但是,我认为有一种更简单的方法.请帮忙.
我有一个使用SQL Server CE 4.0和Entity Framework 4.0的ASP.NET项目.它在我的本地计算机上工作正常.
但是,当我将它移动到远程服务器,并尝试登录到程序的管理部分时,我收到以下错误:
The connection name 'LocalSqlServer' was not found in the applications configuration or the connection string is empty.
Run Code Online (Sandbox Code Playgroud)
它引用了远程服务器上machine.config中的以下行:
Line 237: <membership>
Line 238: <providers>
Line 239: <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />
Line 240: </providers>
Line 241: </membership>
Run Code Online (Sandbox Code Playgroud)
现在,我的web.config中没有"AspNetSqlMembershipProvider"语句,它引用了一个名为"LocalSqlServer"的连接字符串.相反,我有以下内容:
<membership defaultProvider="DefaultMembershipProvider">
<providers>
<add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider" connectionStringName="PUGConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" applicationName="/" />
</providers>
</membership>
Run Code Online (Sandbox Code Playgroud)
这实际上在本地工作.连接字符串的名称是PUGConnection,而不是LocalSqlServer. …
asp.net asp.net-membership membership-provider sql-server-ce entity-framework-4
我正在使用Microsoft Visual Studio express 2012 for web编写MVC4网站.每当我在程序包管理器控制台中运行"Update-Database"时,都会发生以下异常:
To call this method, the "Membership.Provider" property must be an instance of "ExtendedMembershipProvider".
这是我的种子方法:
protected override void Seed(GNSystem.Models.DataContext context)
{
context.Forums.AddOrUpdate(
new Forum { ForumName = "Hello" },
new Forum { ForumName = "World" },
new Forum { ForumName = "!" }
);
context.UserProfiles.Add(new UserAccount { UserName = "Gilad", EMail = "gilad.doom@gmail.com" });
WebSecurity.CreateUserAndAccount("Gilad", "123456");
WebSecurity.Login("Gilad", "123456");
context.Threads.AddOrUpdate(
new Thread { Subject = "FirstThread", Content = "Awesome Content", ForumID = 1, UserID = …Run Code Online (Sandbox Code Playgroud) 我在项目中使用ASP.NET Identity作为成员资格系统.创建用户后,我想检查结果,然后返回原始的IdentityResult错误.我该如何更改这些消息?
谢谢.
更新:
public virtual async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser() { UserName = model.UserName };
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
FormsAuthentication.SetAuthCookie(user.UserName, false);
return RedirectToAction("Index", "Home");
}
else
{
AddErrors(result);
}
}
return View(model);
}
private void AddErrors(IdentityResult result)
{
foreach (var error in result.Errors)
{
//I need to change error text message here!
ModelState.AddModelError("", error);
}
}
Run Code Online (Sandbox Code Playgroud) c# asp.net-mvc identity membership-provider asp.net-identity
asp.net ×4
c# ×4
asp.net-mvc ×3
membership ×3
security ×2
.net ×1
azure ×1
identity ×1
mysql ×1
roleprovider ×1