Q1:如何使用SpringSecurity?
A1:定义一个config类,调用@EnableWebSecurity注解
Q2:密码设置以及加密
A2:SpringSecurity强制性要求必须使用密码加密器(PasswordEncoder),如果不利用加密方式会导致 There is no PasswordEncoder mapped for the id "null"
异常
Spring Security 内置的 Password Encoder 有:
加密算法名称 | PasswordEncoder |
---|---|
NOOP | NoOpPasswordEncoder.getInstance() |
SHA256 | new StandardPasswordEncoder() |
BCRYPT(官方推荐) | new BCryptPasswordEncoder() |
LDAP | new LdapShaPasswordEncoder() |
PBKDF2 | new Pbkdf2PasswordEncoder() |
SCRYPT | new SCryptPasswordEncoder() |
MD4 | new Md4PasswordEncoder() |
MD5 | new MessageDigestPasswordEncoder("MD5") |
SHA_1 | new MessageDigestPasswordEncoder("SHA-1") |
SHA_256 | new MessageDigestPasswordEncoder("SHA-256") |
另外,加密后的密码需要注入进IOC容器中,否则也会报错
Q3:从数据库拿用户信息进行验证
A3:利用UserDetails类,接受和验证前台输入信息和后台数据库信息,接受信息利用UserDetails中的User类,User类的结构为(用户名(String),密码(加密),权限)
其中,权限使用 AuthorityUtils.commaSeparatedStringToAuthorityList 接收解析,如果没有此用户可以抛出一个UsernameNotFoundException(自定义的错误信息)的异常
Q4:如何进行用户权限判断
A4:建立三张表,即用户表、用户-权限表、权限表
Q5:如何将数组和集合内的元素拼接成字符串?
A5:什么年代的还在用传统循环拼接?利用String.join()方法即可,其中String.join()括号中前面写每个元素的分割符号,随后写的是要拼接的集合或数组,这两个变量要用逗号隔开