10-认证类UserDetailsService
一、UserDetails:接口,表示用户信息的
六个方法:
-
String getPassword();
获取密码 -
String getUsername();
获取用户名 -
boolean isAccountNonExpired();
账号是否过期 -
boolean isAccountNonLocked();
账号是否锁定 -
boolean isCredentialsNonExpired();
证书是否过期 -
boolean isEnabled();
账号是否启用
User实现类:
org.springframework.security.core.userdetails.User
可以:自定义类实现UserDetails接口,作为系统中的用户类。这个类可以交给springsecurity使用。
二、UserDetailsService接口
主要作用:获取用户信息,得到是UserDetails对象。一般项目中都需要自定义类实现这个接口,从数据库中获取数据。
一个方法需要实现。
UserDetails loadUserByUsername(String var1):根据用户名称,获取用户信息(用户名称,密码,角色结合,是否可用,是否锁定等信息)
UserDetailsService接口的实现类:
1、InMemoryUserDetailsManager:在内存中维护用户的信息。
优点:使用方便
缺点:数据不是持久的。系统重启后数据恢复原样。
2、JdbcUserDetailManager:用户信息存放在数据库中,底层使用jdbcTemplate操作数据库。可以使用JdbcUserDetailManager中的方法完成用户的管理。
(1)createUser:创建用户
(2)updateUser:更新用户信息
(3)deleteUser:删除用户
(4)UserExits:判断用户是否存在
数据库文件
user.ddl文件:
create table users(username varchar_ignorecase(50) not null primary key,password varchar_ignorecase(500) not null,enabled boolean not null);
create table authorities (username varchar_ignorecase(50) not null,authority varchar_ignorecase(50) not null,constraint fk_authorities_users foreign key(username) references users(username));
create unique index ix_auth_username on authorities (username,authority);

浙公网安备 33010602011771号