在 jwt 符号中使用 ENV 变量
use ENV variable inside jwt sign
我在我的系统中使用 JWT,它工作得很好,我为我的 SecretKey 使用了一个常规字符串,这是工作代码
export class CompanyResolver {
@Query(() => [Company])
companies() {
return Company.find();
}
@Query(() => Company)
async login(
@Arg("email") email: string,
@Arg("password") password: string,
): Promise<Company | null> {
const company = await Company.findOne({ where: { email } });
if (!company)
throw new Error("Company Not Found!!!");
if (!await bcrypt.compare(password, company.password))
throw new Error("Incorrect Password!!!");
const secret=process.env.JWT_SECRET;
console.log(secret)
company.accessToken = jsonwebtoken.sign({ company }, "12345", {
expiresIn: "30 days"
})
return company;
}
我在我的 env 文件中定义了我的秘密,在 console.log(process.env.JWT_SECRET)
确实把我的钥匙还给我,这意味着没有问题,但问题是当我尝试使用它时
company.accessToken = jsonwebtoken.sign({ company }, secret, {
expiresIn: "30 days"
})
我明白了
Type 'undefined' is not assignable to type 'Secret'.
我是 nodejs 和 TS 的新手 对于任何幼稚的错误我提前道歉,有人可以指出这个问题吗?
process.env
值类型为 string | undefined
。这意味着 Typescript 不保证每个 process.env.MY_ENV_VAR
都必须有字符串类型 returned。如果没有设置环境变量,可能会return undefined
,所以请注意安全。
在这种情况下,这样的事情应该有所帮助
if(secret){
company.accessToken = jsonwebtoken.sign({ company }, secret, {
expiresIn: "30 days"
})
} else {
// Handle the case where the variable is not set, may be throw exception
}
我在我的系统中使用 JWT,它工作得很好,我为我的 SecretKey 使用了一个常规字符串,这是工作代码
export class CompanyResolver {
@Query(() => [Company])
companies() {
return Company.find();
}
@Query(() => Company)
async login(
@Arg("email") email: string,
@Arg("password") password: string,
): Promise<Company | null> {
const company = await Company.findOne({ where: { email } });
if (!company)
throw new Error("Company Not Found!!!");
if (!await bcrypt.compare(password, company.password))
throw new Error("Incorrect Password!!!");
const secret=process.env.JWT_SECRET;
console.log(secret)
company.accessToken = jsonwebtoken.sign({ company }, "12345", {
expiresIn: "30 days"
})
return company;
}
我在我的 env 文件中定义了我的秘密,在 console.log(process.env.JWT_SECRET)
确实把我的钥匙还给我,这意味着没有问题,但问题是当我尝试使用它时
company.accessToken = jsonwebtoken.sign({ company }, secret, {
expiresIn: "30 days"
})
我明白了
Type 'undefined' is not assignable to type 'Secret'.
我是 nodejs 和 TS 的新手 对于任何幼稚的错误我提前道歉,有人可以指出这个问题吗?
process.env
值类型为 string | undefined
。这意味着 Typescript 不保证每个 process.env.MY_ENV_VAR
都必须有字符串类型 returned。如果没有设置环境变量,可能会return undefined
,所以请注意安全。
在这种情况下,这样的事情应该有所帮助
if(secret){
company.accessToken = jsonwebtoken.sign({ company }, secret, {
expiresIn: "30 days"
})
} else {
// Handle the case where the variable is not set, may be throw exception
}