如何在 adonisjs 中使用 Hash.make(user.password)
How to use Hash.make(user.password) in adonisjs
正在尝试使用来自 import Hash from '@ioc:Adonis/Core/Hash'
的 Hash.make(user.password)
加密用户密码
当代码试图执行@beforesave 中的 Hash.make
时,问题发生了,它给了我一个 referenceError。
message:'Hash is not defined'
stack:'ReferenceError: Hash is not defined\n at eval (eval at hashPassword (/usr/src/app/Models/User.ts:35:9), <anonymous>:2:28)
这里是用户模型。
import { DateTime } from 'luxon'
import Hash from '@ioc:Adonis/Core/Hash'
import { column, beforeSave, BaseModel } from '@ioc:Adonis/Lucid/Orm'
import Logger from '@ioc:Adonis/Core/Logger'
export default class User extends BaseModel {
@column({ isPrimary: true })
public id: number
@column()
public email: string
@column({ columnName: 'first_name' })
public firstName: string
@column({ columnName: 'last_name' })
public lastName: string
@column({ serializeAs: null })
public password: string
@column()
public rememberMeToken?: string
@column.dateTime({ autoCreate: true })
public createdAt: DateTime
@column.dateTime({ autoCreate: true, autoUpdate: true })
public updatedAt: DateTime
@beforeSave()
public static async hashPassword(user: User) {
if (user.$dirty.password) {
try {
user.password = await Hash.make(user.password)
}
catch (error) {
Logger.error(error)
}
}
}
}
当调试步骤进入属于散列依赖的正确路径时,但我认为它在散列驱动程序内部失败
因为我注意到它只发生在 docker 中,问题似乎出在 docker 中的默认驱动程序。
我用这个解决了这个问题:
await Hash.use('bcrypt').make(user.password)
或者您可以使用以下方法更改默认哈希驱动器:
default: Env.get('HASH_DRIVER', 'bcrypt')
正在尝试使用来自 import Hash from '@ioc:Adonis/Core/Hash'
Hash.make(user.password)
加密用户密码
当代码试图执行@beforesave 中的 Hash.make
时,问题发生了,它给了我一个 referenceError。
message:'Hash is not defined'
stack:'ReferenceError: Hash is not defined\n at eval (eval at hashPassword (/usr/src/app/Models/User.ts:35:9), <anonymous>:2:28)
这里是用户模型。
import { DateTime } from 'luxon'
import Hash from '@ioc:Adonis/Core/Hash'
import { column, beforeSave, BaseModel } from '@ioc:Adonis/Lucid/Orm'
import Logger from '@ioc:Adonis/Core/Logger'
export default class User extends BaseModel {
@column({ isPrimary: true })
public id: number
@column()
public email: string
@column({ columnName: 'first_name' })
public firstName: string
@column({ columnName: 'last_name' })
public lastName: string
@column({ serializeAs: null })
public password: string
@column()
public rememberMeToken?: string
@column.dateTime({ autoCreate: true })
public createdAt: DateTime
@column.dateTime({ autoCreate: true, autoUpdate: true })
public updatedAt: DateTime
@beforeSave()
public static async hashPassword(user: User) {
if (user.$dirty.password) {
try {
user.password = await Hash.make(user.password)
}
catch (error) {
Logger.error(error)
}
}
}
}
当调试步骤进入属于散列依赖的正确路径时,但我认为它在散列驱动程序内部失败
因为我注意到它只发生在 docker 中,问题似乎出在 docker 中的默认驱动程序。
我用这个解决了这个问题:
await Hash.use('bcrypt').make(user.password)
或者您可以使用以下方法更改默认哈希驱动器:
default: Env.get('HASH_DRIVER', 'bcrypt')