【功能需求】找回或重置密码

  1. 1. 功能设计
    1. 1.1. 如何保存密码
      1. 1.1.1. 相关项目经验
    2. 1.2. 密码重置
      1. 1.2.1. 用户名还是邮件地址?
      2. 1.2.2. 过滤用户
  2. 2. 功能实现
  3. 3. 📖参看
  4. 4. ※参考和引用
  5. 5. 🔗外部链接

功能需求 —— [ 找回或重置密码 ]。

功能设计

所有需要登录的网站,都会提供”找回密码”的功能,防止用户忘记密码。


👆←🗎[1]

如何保存密码

相关项目经验

项目列表
  • 【个人项目-叮叮】DingDing/Security.java at master · SuiteLHY/DingDing

    相关代码(截选) 👆
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    package github.com.suitelhy.dingding.security.service.api.domain.vo;

    import github.com.suitelhy.dingding.core.infrastructure.config.springdata.attribute.converter.VoAttributeConverter;
    import github.com.suitelhy.dingding.core.infrastructure.domain.model.VoModel;
    import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
    import org.springframework.security.crypto.password.PasswordEncoder;

    // ……(此处省略若干代码)

    /**
    * 加密策略
    *
    * @Description 密码加密策略.
    */
    enum PasswordEncoderVo
    implements VoModel<PasswordEncoderVo, Integer, String> {
    BCrypt(1
    , "BCryptPasswordEncoder"
    , "BCrypt 加密策略。"
    , new BCryptPasswordEncoder()
    , "\\A\\$2(a|y|b)?\\$(\\d\\d)\\$[./0-9A-Za-z]{53}");
    /**
    * 为持久化类型转换器提供支持
    */
    @javax.persistence.Converter(autoApply = true)
    public static class Converter
    extends VoAttributeConverter<PasswordEncoderVo, Integer, String> {
    /**
    * @Design (单例模式 - 登记式)
    */
    private static class Factory {
    private static final Converter SINGLETON = new Converter();
    }
    private Converter() {
    super(PasswordEncoderVo.class);
    }
    public static @NotNull Converter getInstance() {
    return Factory.SINGLETON;
    }
    }
    public final @NotNull Integer code;
    public final @NotNull String name;
    public final String description;
    public final @NotNull PasswordEncoder encoder;
    /**
    * 正则表达式模板
    */
    public final @NotNull String RegexPattern;
    /**
    * (Constructor)
    *
    * @param code
    * @param name
    * @param description
    * @param encoder
    * @param RegexPattern
    */
    PasswordEncoderVo(@NotNull Integer code, @NotNull String name, @NotNull String description
    , @NotNull PasswordEncoder encoder, @NotNull String RegexPattern)
    {
    this.code = code;
    this.name = name;
    this.description = description;
    this.encoder = encoder;
    this.RegexPattern = RegexPattern;
    }
    /**
    * VO 的值
    *
    * @Description Unique attribute.
    *
    * @return {@link this#code}
    */
    @Override
    public @NotNull Integer value() {
    return this.code;
    }
    /**
    * 详细信息
    *
    * @return {@link this#description}
    */
    @Override
    public String description() {
    return this.description;
    }
    /**
    * VO 的 (展示)名称
    *
    * @return {@link this#name}
    */
    @Override
    public @NotNull String displayName() {
    return this.name;
    }
    /**
    * 等效比较
    *
    * @Description 备注: <method>equals(Object)</method>
    *
    * @param value {@link this#equalsValue(Number)}
    *
    * @return 判断结果
    *
    * @see this#equalsValue(Number)
    */
    public boolean equals(@NotNull Integer value) {
    return equalsValue(value);
    }
    @Override
    public @NotNull String toString() {
    return VoModel.toString(this);
    }
    /**
    * 提供类型转换器
    *
    * @Design 为持久化类型转换功能提供支持.
    *
    * @return {@link Converter}
    */
    @Override
    @SuppressWarnings("unchecked")
    public @NotNull Converter voAttributeConverter() {
    return Converter.getInstance();
    }
    }

密码重置

用户名还是邮件地址?

过滤用户

功能实现


📖参看

分类:工具🧰 | 查阅🔍
分类:其他(二度及以上关联☌)

※参考和引用

  1. ^找回密码的功能设计 - 阮一峰的网络日志

🔗外部链接