忘记DotNetNuke的host密码?-如何恢复丢失的DNN密码

简介: 有时候我们会忘记DotNetNuke的host密码,这是一件很头疼的事,这时我们可以通过下面这一段SQL Script把host密码重置为一个已知用户的密码(假设这个已知用户名为m2land)。 原理其实很简单,这段Script会把aspnet_membership表中的"m2land"用户的password和password_salt值拷贝并覆盖host对应的值。
忘记host密码? 有时候我们会忘记DotNetNuke的host密码,这是一件很头疼的事,这时我们可以通过下面这一段SQL Script把host密码重置为一个已知用户的密码(假设这个已知用户名为m2land)。

原理其实很简单,这段Script会把aspnet_membership表中的"m2land"用户的password和password_salt值拷贝并覆盖host对应的值。
使用方法请参考script中的说明。


/*
 -- Database Utility ---------------------------------------------------------------------------
 Description : Reset a Password in a DotNetNuke database
 Author : Tony Tullemans
 Date Created : 18.04.2007
 Note/s : Before you run this script you must know the UserName and Password of another
 registered DNN user in the database you wish to affect.
 -----------------------------------------------------------------------------------------------
 
*/
 
DECLARE   @databaseName   VARCHAR ( 128 )
SELECT   @databaseName   =   DB_NAME ()
 
PRINT   ' RESET PASSWORD IN DATABASE :  '   +   @databaseName
PRINT   ' ----------------------------- '   +   REPLICATE ( ' - ' DATALENGTH ( @databaseName  ));
 
DECLARE   @knownUserName   NVARCHAR ( 128 )
DECLARE   @lostUserName   NVARCHAR ( 128 )
DECLARE   @lostUserId   NVARCHAR ( 128 )
DECLARE   @knownPassword   NVARCHAR ( 128 )
DECLARE   @knownSalt   NVARCHAR ( 128 )
 
SET   @knownUserName   =   ' m2land '
SET   @lostUserName   =   ' host '
 
SELECT   @knownPassword   =  Password,  @knownSalt   =  PasswordSalt
FROM  aspnet_Membership
INNER   JOIN  aspnet_users
ON  aspnet_Membership.UserId  =  aspnet_users.UserId
where  UserName  =   @knownUserName ;
 
PRINT   ''
PRINT   ' Known Password for " '   +   @knownUserName   +   ' " is :  '   +   @knownPassword
PRINT   ' Known Password Salt for " '   +   @knownUserName   +   ' " is :  '   +   @knownSalt
 
SELECT   @lostUserId   =  aspnet_Membership.UserId
FROM  aspnet_Membership
INNER   JOIN  aspnet_users
ON  aspnet_Membership.UserId  =  aspnet_users.UserId
WHERE  UserName  =   @lostUserName ;
 
PRINT   ''
PRINT   ' UserID for " '   +   @lostUserName   +   ' " is :  '   +   @lostUserId
PRINT   ''
 
IF  ( DATALENGTH ( @lostUserName <=   0   OR   @lostUserName   IS   NULL )
PRINT   ' Invalid Lost User Name  '   +   @lostUserName
ELSE   BEGIN
IF  ( DATALENGTH ( @knownUserName <=   0   OR   @knownUserName   IS   NULL )
PRINT   ' Invalid Lost User Name  '   +   @lostUserName
ELSE   BEGIN
IF  ( DATALENGTH ( @knownPassword <=   0   OR   @knownPassword   IS   NULL )
PRINT   ' Invalid Known Password  '   +   @knownPassword
ELSE   BEGIN
IF  ( DATALENGTH ( @knownSalt <=   0   OR   @knownSalt   IS   NULL )
PRINT   ' Invalid Known Salt  '   +   @knownSalt
ELSE   BEGIN
PRINT   ''
PRINT   ' BEFORE '
SELECT   left (UserName,  12 as  UserName, aspnet_Membership.UserId,  left (Email,  20 as  Email, Password, PasswordSalt
FROM  aspnet_Membership  INNER   JOIN  aspnet_users  ON  aspnet_Membership.UserId  =  aspnet_users.UserId
WHERE  UserName  IN  (  @knownUserName @lostUserName  );
PRINT   ''
PRINT   ' Changing Password for User Id : " '   +   @lostUserId   +   ' " to " '   +   @knownPassword   +   ' " '
PRINT   ''
UPDATE  aspnet_Membership
SET  Password  =   @knownPassword ,
PasswordSalt 
=   @knownSalt
--  SELECT UserId, Password, PasswordSalt
--
 FROM aspnet_Membership
WHERE  UserId  =   @lostUserId ;
PRINT   ''
PRINT   ' AFTER '
SELECT   left (UserName,  12 as  UserName, aspnet_Membership.UserId,  left (Email,  20 as  Email, Password, PasswordSalt
FROM  aspnet_Membership  INNER   JOIN  aspnet_users  ON  aspnet_Membership.UserId  =  aspnet_users.UserId
WHERE  UserName  IN  (  @knownUserName @lostUserName  );
END
END
END
END
GO

PRINT   ''
PRINT   '  * * * END OF SCRIPT * * * '
PRINT   ''
GO

附:还有一个版本的Script,这个版本是直接调用Asp.net的存储过程来修改密码,在我看来更方便,但不知为什么不起作用,望赐教!

SQL Script recovering host password use asp.net store procedure
-------------------------------------------------------------------------------------

Declare @UserName NVarChar(255)
Declare @NewPassword NVarChar(255)
Declare @PasswordSalt NVarChar(128)
Declare @Application NVarChar(255)

-- Enter the user name and new password between ''
--
 do not leave any spaces unless intended to do so.
--
 Edit only between single quote characters
Set @UserName = 'host' -- This default DNN host user
Set @NewPassword = 'newpassword' --New password
--
 Do modify any code below this line

Set @Application = (SELECT [ApplicationID] FROM aspnet_Users WHERE UserName=@UserName)
Set @PasswordSalt = (SELECT PasswordSalt FROM aspnet_Membership WHERE UserID IN (SELECT UserID FROM aspnet_Users WHERE UserName=@UserName))

Exec dbo.aspnet_Membership_ResetPassword @Application@UserName@NewPassword1010@PasswordSalt-5

-------------------------------------------------------------------------------------

另一个方法:

As there are frequent requests from users, who lost the password of the host account (and you cannot request the host password by email), the following solution will help for all DNN 3 and 4 installation. Please note, that your need direct access to the database to suceed with the issue:

  • if "register" is not displayed for the portal, go to table "Portals"  in your database and enter value "2" into column "Registration".
  • create a new user account by registration (this time, please remember the password you enter!)
  • go to database, enter table "ASPNet_Membership"
  • go to new user account (usually the last one) and copy the encrypted values of columns "Password" and "PasswordSalt" into the same columns of user account "host" (usually th first entry in this table) 
  • login as user "host" using the new password and delete the reshly created other user.
  • Keep remembering your password ;)
来自: http://www.deutschnetnuke.de/tabid/183/Default.aspx


目录
相关文章
|
机器学习/深度学习 数据库 数据安全/隐私保护
|
机器学习/深度学习 数据库 数据安全/隐私保护
|
机器学习/深度学习 数据安全/隐私保护 数据库
|
机器学习/深度学习
DotNetNuke(DNN)如何升级到DNN 4.9.3
从http;//www.codeplex.com/DotNetNuke上下载 DotNetNuke_Community_04.09.03_Upgrade.zip 包。   如果你使用的是租用的服务器,在升级之前,在网站的根目录放置一个app_offline.htm文件,这样你就可以屏蔽升级时一切对网站的访问,从而保证在任何时候都可以升级。
|
SQL 机器学习/深度学习
DNN(DotNetNuke) Sql Injection 攻击
最近有一些DNN网站报告收到Sql Injection攻击   因为Sql injection 攻击利用的是网站中动态执行的sql语句比如通过字符串连接生成并直接执行的sql语句,或者通过EXEC或sp_execute执行的存储过程。
817 0
|
机器学习/深度学习 JavaScript 前端开发
DotNetNuke(DNN)皮肤制作-通过JS文件解决不同IE版本对CSS解释不一致的问题
IE不同的版本对CSS解释不一致是一个众所周知的问题,有很多解决方案,其中的一个方法是通过加载不同的JS脚本来纠正不同IE版本对CSS的解释,这样你只要按照web标准来编写CSS就可以了。   IE7.js是用来解决版本低于7,高于或等于5的IE上的一些WEB标准的兼容性问题,可以看看解决的兼容性列表。
|
机器学习/深度学习 网络安全 数据安全/隐私保护
DotNetNuke(DNN)SMTP设置
DNN的SMTP设置因为细节设置比较多,并且只要错一点点就会无法使用,这里把几种常用的情况讲一下。 普通SMTP设置 对于大部分的邮箱都是要求SMTP认证的,所以对于“SMTP Authentication:”我们都应该选择"Basic",并在下面的SMTP Username和SMTP Password提供你的用户名和密码: 有一点一定要注意,在Host Details节里的Host Email一定要改成对应的邮箱,不然就无法设置成功。
|
机器学习/深度学习 SEO C#
DotNetNuke(DNN)学习和应用资源合集
在想解决任何问题之前,请看看DNN的官方文档有没有答案。 DNN官方文档:http://jaist.dl.sourceforge.net/sourceforge/dnn/DotNetNuke_4.4.
1874 0
|
机器学习/深度学习 数据库 SQL
使用DotNetNuke(DNN) Startkit 4.7(及以上版本)安装无法完成问题的解决方法
最近决定使用DNN Startkit 做些开发,却发现下载DNN 4.8.2 Startkit安装后,生成的网站总是无法完成安装,一到数据库安装那里就停下来,只有进度条滚动,不执行安装的Script。 如图: 几经周折,最终发现自己犯了了一个很愚蠢的错误-没有仔细阅读说明。
668 0
忘记DotNetNuke的host密码?-如何恢复丢失的DNN密码
有时候我们会忘记DotNetNuke的host密码,这是一件很头疼的事,这时我们可以通过下面这一段SQL Script把host密码重置为一个已知用户的密码(假设这个已知用户名为m2land)。 原理其实很简单,这段Script会把aspnet_membership表中的"m2land"用户的password和password_salt值拷贝并覆盖host对应的值。