grails - 基本密码散列 Grails

标签 grails password-encryption

我目前正在玩 Grails,并且正在制作一个基本的登录和 session 系统(只是为了好玩)。

我目前在网页上有一个表格,可以读取用户名和密码并将它们发送到 Controller 。这是当前 Controller 中的代码的样子:

def login = {

  String inputPassword = params.password

if(params.username == "admin" && inputPassword == "changeme"){
  flash.message = "login succeed";
    session.user = "admin"
    }
else{
    flash.message = "login failed"
    }

  redirect(action: 'index')

}

  def logout = {
  session.user = null
  redirect(action: 'index')

}

现在,我知道将密码存储在原始文本中是个坏主意,所以我想尝试对密码进行哈希处理。

我假设这段代码从密码字段中获取输入并将其分配给变量 inputPassword:
 String inputPassword = params.password

可以使用某种 API 将其更改为如下所示:
String inputPassword = aHashOf(params.password)

检查步骤可能如下所示:
 if(params.username == "admin" && inputPassword == (whatever the final hash looks like) )

是否有 API 或内置函数可以帮助我解决这个问题?我是否试图以错误的方式解决这个问题?有什么建议么?

还有,后来当我学会使用数据库时,这个过程是否可以很容易地更改为使用数据库值?

最佳答案

尽管自己实现这样的东西来学习身份验证和授权的工作原理似乎是合理的,但对于实际用例来说,为此使用框架/库似乎更现实。

在 Java/Spring 世界(其中 grails 是其中的一部分)中,有 spring-security使用它的 grails 插件 spring-security-core以及 apache shiro . docs插件应该给你一个很好的起点如何使用spring security的api。

关于grails - 基本密码散列 Grails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30004414/

相关文章:

grails - Grails-如何在没有GORM附加字段的情况下获取对象域字段?

Grails:将 Assets 文件夹中的文件渲染到gsp

grails - 在 Grails 项目中放置资源的位置?

Ansible SHA1 加密变量

jakarta-ee - Spring-Security PasswordEncoder 返回 null

java - 通过默认 SSLSocketFactory 创建的 Socket 发送密码是否安全?

hibernate - 使用Hibernate将可变转换为不可变

grails - 在grails的taglib定义内使用资源?

node.js - 为什么不需要盐来比较bcrypt中的密码是否正确?

php - 我可以存储散列的电话号码并将其未散列发送到电子邮件吗?