我需要能够以管理员用户身份更改用户的密码,有点像手动密码重置功能,可以通过电话执行。我将如何使用Grails Spring Security插件来完成此操作?我试图寻找关于如何完成这些任务的文档,但没有提供任何内容。如何以编程方式使用Grails Spring Security以管理员身份更改用户密码?
2
A
回答
3
@ AA的答案是技术上是正确的,但过度仿制,因为该插件必须是基于配置的。由于您可以对类和字段名称进行硬编码,所以真正的代码会更加紧凑。此外,由于您只需要更新密码,因此最后的角色更新不相关。
如果您的用户类名User
然后用这个动作来显示用户信息:
def editUserPassword() {
[user: User.get(params.userId)]
}
,并在GSP配置表(它会是类似于产生edit.gsp
)张贴到本动作:
def updateUserPassword() {
def user = User.get(params.userId)
user.password = params.newPassword
if (!user.save())
render view: 'editUserPassword', model: [user: user]
return
}
// redirect to the 'success' page or render the user with [user: user]
}
变化userId
和newPassword
到任何参数名称你实际使用
1
可以使用弹簧安全的UI插件,或者你可以看到它的source code,并学习如何:
def update = {
String passwordFieldName = SpringSecurityUtils.securityConfig.userLookup.passwordPropertyName
def user = findById()
if (!user) return
if (!versionCheck('user.label', 'User', user, [user: user])) {
return
}
def oldPassword = user."$passwordFieldName"
user.properties = params
if (params.password && !params.password.equals(oldPassword)) {
String salt = saltSource instanceof NullSaltSource ? null : params.username
user."$passwordFieldName" = springSecurityUiService.encodePassword(params.password, salt)
}
if (!user.save(flush: true)) {
render view: 'edit', model: buildUserModel(user)
return
}
String usernameFieldName = SpringSecurityUtils.securityConfig.userLookup.usernamePropertyName
lookupUserRoleClass().removeAll user
addRoles user
userCache.removeUserFromCache user[usernameFieldName]
flash.message = "${message(code: 'default.updated.message', args: [message(code: 'user.label', default: 'User'), user.id])}"
redirect action: edit, id: user.id
}
相关问题
- 1. 如何以编程方式更改Ambari管理员密码
- 2. VB.NET以管理员身份以编程方式登录
- 3. 如何在Firebase中以管理员身份更新用户
- 4. 以编程方式禁用Spring Security
- 5. 以用户身份进行管理员身份验证
- 6. 如何让cmd.exe调用没有管理员帐户密码的“以管理员身份运行”命令?
- 7. 如何使用用户名和密码以管理员身份运行应用程序
- 8. 以无密码的用户身份登录(对于管理员用例)
- 9. Oracle数据库以编程方式更改用户密码
- 10. 如何以管理员身份运行?
- 11. 如何以管理员身份运行?
- 12. 以编程方式设置“以管理员身份运行”标志
- 13. ASP.NET身份 - 如何以编程方式创建用户时更改密码要求
- 14. ASP.NET MVC 5以管理员身份更改密码,不需要电子邮件
- 15. 如何在使用Spring Security时处理密码更改
- 16. 如何以管理方式为忘记密码的ASP.net身份用户设置新密码?
- 17. pgadmin4允许以管理员身份登录的用户密码错误
- 18. 以root用户身份以编程方式运行C程序
- 19. 以管理员身份运行程序
- 20. 以用户身份从Visual Studios进行调试,以管理员身份运行
- 21. Spring Security:如果用户未通过身份验证,如何以编程方式定义转发逻辑
- 22. 如果以管理员身份运行应用程序更改的ShortdateFormat
- 23. ASP.NET MVC身份以编程方式创建用户绕过密码验证
- 24. 以管理员身份运行密码包含波浪
- 25. 更改密码 - Spring Security
- 26. 如何在更改密码后以编程方式验证用户身份?如何使用j_security_check进行基于表单的身份验证登录
- 27. IIS管理员可以更改Windows服务帐户的密码
- 28. 使用预定义的用户名和密码以管理员身份运行应用程序
- 29. 以账户管理员身份启动程序,无需输入密码即可进入管理员权限
- 30. C++控制台应用程序提示“以管理员身份运行”以管理员身份运行?
酷,我只是尝试直接设置密码,它的工作!我并没有意识到Spring Security与GORM的联系,当你设置字段时会自动对密码进行散列。我想我不得不手动加密密码。 –
这是新的1.2,它是可选的,但一个好主意。生成的用户类具有代码,您可以自由删除它并按照您的喜好对密码进行编码。 –