我需要能夠以管理員用戶身份更改用戶的密碼,有點像手動密碼重置功能,可以通過電話執行。我將如何使用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,它是可選的,但一個好主意。生成的用戶類具有代碼,您可以自由刪除它並按照您的喜好對密碼進行編碼。 –