我目前正在玩 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/