小编Egi*_*ile的帖子

程序以状态!= 0(set -e)退出后执行EXIT陷阱时的Bash函数作用域状态

在bash函数中声明局部变量使该变量仅在函数本身及其子级内部可见,因此如果我运行:

#!/bin/bash
set -e

func_one() {
  echo "${var}"
}

func_two() {
  local -r var="var from func_two"
  func_one
}

func_two
Run Code Online (Sandbox Code Playgroud)

输出为:

var from func_two
Run Code Online (Sandbox Code Playgroud)

即使var变量声明为local,并且func_two内的只读变量也可以从func_one函数访问。在后者中,可以声明一个具有本地和只读名称的变量:

#!/bin/bash
set -e

func_one() {
  local -r var="var from func_one"
  echo "${var}"
}

func_two() {
  local -r var="var from func_two"
  func_one
}

func_two
Run Code Online (Sandbox Code Playgroud)

输出为:

var from func_one
Run Code Online (Sandbox Code Playgroud)

如果从EXIT陷阱调用func_one,也会发生同样的情况:

#!/bin/bash
set -e

func_one() {                                                                    
  local -r var="var from func_one"                                              
  echo "${var}"                                                                 
}                                                                               

func_two() {                                                                   
  local …
Run Code Online (Sandbox Code Playgroud)

bash local readonly bash-trap

5
推荐指数
1
解决办法
54
查看次数

在symfony中没有用户实例的情况下哈希用户密码

从官方文档中可以看出,当前在 Symfony 框架中手动哈希密码的过程如下:

use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;

public function register(UserPasswordEncoderInterface $encoder)
{
    // whatever *your* User object is
    $user = new App\Entity\User();
    $plainPassword = 'ryanpass';
    $encoded = $encoder->encodePassword($user, $plainPassword);

    $user->setPassword($encoded);
}
Run Code Online (Sandbox Code Playgroud)

encodePassword方法需要将 User 实例作为其第一个参数传递。因此,在调用该方法时,用户实例必须预先存在:这意味着必须在没有有效散列密码的情况下实例化“用户”。我希望将密码作为构造函数参数提供,以便用户实体在创建时处于有效状态。

是否有其他方法使用 Symfony 对密码进行哈希处理?

passwords hash symfony

4
推荐指数
1
解决办法
2060
查看次数

标签 统计

bash ×1

bash-trap ×1

hash ×1

local ×1

passwords ×1

readonly ×1

symfony ×1