Tag: asp.net 会员

ASP.NET Membership ChangePassword控件 – 需要检查以前的密码

我有一个新表,其中包含旧密码,我需要检查是否有匹配。 如果匹配,我需要ChangePassword控件不要更改密码。 我需要告诉用户这个密码已被使用并且是一个新密码。 我似乎无法通过更改密码来中断控制。 也许我正在使用错误的事件。 这是我的一段代码,或者我希望它如何工作。 我感谢你的帮助。 protected void ChangePassword1_ChangedPassword(object sender, EventArgs e) { MembershipUser user = Membership.GetUser(); string usrName = “”; if (user != null) { string connStr = ConfigurationManager.ConnectionStrings[“LocalSqlServer”].ConnectionString; SqlConnection mySqlConnection = new SqlConnection(connStr); SqlCommand mySqlCommand = mySqlConnection.CreateCommand(); mySqlCommand.CommandText = “Select UserName from OldPasswords where UserName = ‘test'”; mySqlConnection.Open(); SqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader(CommandBehavior.Default); […]

实现Custom MembershipUser和Custom MembershipProvider

我尝试在我自己的数据库中使用Custom MemberShipUser实现Custom MembershipPriver(具有特定的用户表模型): 这是不同的文件: iTwitterMembershipProvider.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Security; using System.Collections.Specialized; using iTwitter.Models; public class iTwitterMembershipProvider : MembershipProvider { public override string ApplicationName { get { return _ApplicationName; } set { _ApplicationName = value; } } public override bool ChangePassword(string username, string oldPassword, string newPassword) { throw new NotImplementedException(); […]

密码恢复无需通过电子邮件发送密码

所以,我一直在玩asp:PasswordRecovery并发现我真的不喜欢它,原因有以下几点: 1)即使无法访问Alice的电子邮件,也可以重置Alice的密码。 密码重置的安全问题减轻了这一点,但并不能让我满意。 2)Alice的新密码以明文forms发回给她。 我想向她发送一个特殊链接到我的页面(例如像example.com/recovery.aspx?P=lfaj0831uefjc这样的页面),这会让她更改她的密码。 我想我可以通过创建某种过期密码恢复页面表并将这些页面发送给要求重置的用户来自行完成。 不知何故,这些页面也可以在幕后更改用户密码(例如,通过手动重置它们然后使用新密码的文本来更改密码,因为密码在不知道旧密码的情况下无法更改)。 我确定其他人之前遇到过这个问题,这种解决方案让我觉得有点笨拙。 有一个更好的方法吗? 理想的解决方案不会通过直接访问数据库来违反封装,而是使用数据库中的现有存储过程……尽管这可能是不可能的。

使用MVC SimpleMembership分配角色

我正在通过Nuget在MVC3中尝试“SimpleMembership”,并已经下载了样本。 问题是我无法弄清楚如何将角色分配给特定用户。 在标准MVC成员资格中,您可以使用以下内容: Roles.AddUserToRole(model.UserName, “StandardUser”); 但是,SimpleMembership似乎只有一种方法可以暴露角色(除非我是愚蠢的!) public void RequireRoles(params string[] roles) { WebSecurity.RequireRoles(roles); } 必须有一个简单的方法,因为下表是作为这个nuget包的一部分创建的: -TABLE: webpages_Roles RoleId , RoleName 这有点令人困惑,但在App_Start/SimpleMembershipMvc3.cs有以下内容: Roles.Enabled = true; RoleProvider provider3 = Roles.Providers[“AspNetSqlRoleProvider”]; if (provider3 != null) { RoleProvider provider6 = provider3; SimpleRoleProvider provider4 = CreateDefaultSimpleRoleProvider(“AspNetSqlRoleProvider”, provider6); Roles.Providers.Remove(“AspNetSqlRoleProvider”); Roles.Providers.Add(provider4); } SimpleRoleProvider函数 private static SimpleRoleProvider CreateDefaultSimpleRoleProvider(string name, RoleProvider currentDefault) { RoleProvider […]

HandleUnauthorizedRequest不会覆盖

在我的asp.net mvc3应用程序中,我有一个自定义授权属性,如下所示。 public class CustomAuthorize : AuthorizeAttribute { public IAccountRepository AccountRepository { get; set; } public CustomAuthorize() { this.AccountRepository = new UserModel(); } protected override bool AuthorizeCore(HttpContextBase httpContext) { base.AuthorizeCore(httpContext); return AccountRepository.isEnabled(HttpContext.Current.User.Identity.Name); } protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) { base.HandleUnauthorizedRequest(filterContext); } } 我的控制器操作上有[CustomAuthorize]标签, AuthorizeCore方法工作正常 – 它执行我想要的逻辑(确保帐户实际启用),然后返回。 但是,重写的HandleUnauthorizedRequest方法,据我所知,应该允许我控制未经授权的请求的行为,根本不运行。 我在那里放了一个断点,我把代码放在那里,我未经授权访问我的应用程序,代码永远不会运行。 我错过了什么? 编辑:我做了一些更多的研究,发现了一些其他人有这个问题,但不幸的是没有解决方案。 EDIT2:示例代码 [CustomAuthorize] public class UserController: […]

使用.net成员资格提供程序进行编程登录

我正在尝试对测试中需要当前登录用户的一段代码进行unit testing。 使用.Net 2.0成员资格提供程序,如何以编程方式以此用户身份登录此测试?

ASP.NET Membership C# – 如何比较现有的密码/哈希

我一直在讨论这个问题。 我需要将用户输入的paasword与会员数据库中的密码进行比较。 密码经过哈希处理并且有盐。 由于缺少文档,我不知道盐是否附加到密码,然后散列如何创建它。 我无法得到这个匹配。 从函数返回的散列永远不会匹配数据库中的散列,我知道它是相同的密码。 微软似乎以与我不同的方式对密码进行哈希处理。 我希望有人有一些见解。 这是我的代码: protected void Button1_Click(object sender, EventArgs e) { //HERE IS THE PASSWORD I USE, SAME ONE IS HASHED IN THE DB string pwd = “Letmein44”; //HERE IS THE SALT FROM THE DB string saltVar = “SuY4cf8wJXJAVEr3xjz4Dg==”; //HERE IS THE PASSWORD THE WAY IT STORED IN THE DB […]

如何在app域之间传递经过身份validation的会话

假设您有网站www.xyz.com和www.abc.com。 假设用户访问www.abc.com并通过普通的ASP .NET成员资格提供程序进行身份validation。 然后,从该网站,他们被发送到(重定向,链接,无论什么工作)网站www.xyz.com,网站www.abc.com的意图是将该用户传递到另一个网站作为isAuthenticated的状态,这样网站www.xyz.com就不再要求所述用户的凭证。 这项工作需要什么? 我对此有一些限制,用户数据库是完全独立的,它不是组织内部的,在所有方面,它就像从stackoverflow.com传递到google进行身份validation,它本质上是独立的。 链接到相关文章就足够了。