4个稳定版本

1.0.3 2021年10月7日
1.0.2 2021年4月29日
1.0.1 2020年11月10日
1.0.0 2020年11月9日

认证 中排名 198

Download history 24492/week @ 2024-04-23 23388/week @ 2024-04-30 19593/week @ 2024-05-07 22945/week @ 2024-05-14 27309/week @ 2024-05-21 30345/week @ 2024-05-28 26123/week @ 2024-06-04 21045/week @ 2024-06-11 20658/week @ 2024-06-18 25864/week @ 2024-06-25 22119/week @ 2024-07-02 22785/week @ 2024-07-09 25846/week @ 2024-07-16 30019/week @ 2024-07-23 20687/week @ 2024-07-30 20972/week @ 2024-08-06

每月下载量 103,933

MIT/Apache

61KB
992

password-rules-parser

crate documentation Crates.io version Crates.io downloads dependency status CI

Rust解析器,用于HTML passwordrules 属性,这是一个允许服务以机器可读格式指定其密码要求的HTML属性提议。

该规范主要得到苹果公司的支持,他们的工具和文档可以在 此处 找到。

请参阅该crate的文档以获取我们的入门指南。

示例

此示例可以通过 cargo run --example parse 运行。

use password_rules_parser::{parse_password_rules, CharacterClass};

let password_rules = "minlength: 8; maxlength: 32; required: lower, upper; required: digit; allowed: [-_./\\@$*&!#];";
let parsed_rules =
    parse_password_rules(password_rules, true).expect("failed to parse password rules");

assert_eq!(parsed_rules.min_length.unwrap(), 8);
assert_eq!(parsed_rules.max_length.unwrap(), 32);
// This password rule does not place a restriction on consecutive characters
assert!(parsed_rules.max_consecutive.is_none());
assert_eq!(
    parsed_rules.allowed,
    vec![CharacterClass::Custom(vec![
        '!', '#', '$', '&', '*', '-', '.', '/', '@', '\\', '_',
    ])]
);
assert_eq!(
    parsed_rules.required,
    vec![
        vec![CharacterClass::Upper, CharacterClass::Lower],
        vec![CharacterClass::Digit]
    ]
);

// The above information can be used to make informed decisions about what password
// to generate for use with a specific service

您可以通过 cargo run --example cli 使用此工具解析任意规则。

MSRV

当前最低支持的Rust版本为1.46.0。在需要时,这将提升到最新的稳定Rust版本。

致谢

由1Password团队用❤️制作,感谢优秀的 nom 解析库。

许可证

根据您的选择,许可协议为Apache License,版本2.0MIT许可证
除非您明确说明,否则根据Apache-2.0许可证定义的任何有意提交以包含在此crate中的贡献,均应按上述方式双重许可,而无需任何额外条款或条件。

依赖关系

~1–11MB
~69K SLoC