up:: 常用权限拦截器讲解
这张图展示的是spring security的核心处理流程,当一个用户登录时,会先执行身份认证。如果身份认证未通过,则会要求用户重新认证,这就相当于用户名或密码输入错误了,需要用户重新输入用户名和密码。当用户身份证通过后,则会调用角色管理器判断他是否可以访问。这里如果要实现使用数据库管理用户及权限,就需要自定义用户登录功能,而spring security已经为我们提供好了接口儿。这个接口名字叫做user detail service
只有一个方法,返回的是UserDetails对象
Authencation对象:
这里需要特别注意一下Authencation对象和UserDetails对象的区分。obstacle对象才是spring security使用的进行安全访问,控制用户信息的安全对象。实际上Authencation对象有未认证和已认证的两种状态,在作为参数传入认证管理器的时候。它是一个未认证的对象,它从客户端获取用户的身份信息,如用户名密码可以是从一个登录页面。也可以是从库里中获取,并由系统自动构成一个Authencation对象。而我们这里提到的user的UserDetails。它代表的是一个用户安全信息的源,这个源可以是从数据库。LDAP服务器CA中心返回。spring security要做的就是将这个位移认证的Authencation对象和user details进行匹配。成功后将user details中的用户儿权限信息拷贝到Authencation中,组成一个完整的Authencation对象。与其他组件进行共享。user details即可从数据库中返回,当然了,它也可以从其他如LDAP中返回,这取决于你的系统中使用什么来存储用户信息和权限。以及相应的认证提供者