快手主播
JavaSpringSecurity安全框架:(三)UrDetailsService详解UrDetailsService 详解
当什么也没有配置的时候,账号和密码是由 Spring Security 定义⽣成的。⽽在实际项⽬中账号和密码都是从数据库中查询出来的。所以我们要通过⾃定义逻辑控制认证逻辑。
如果需要⾃定义逻辑时,只需要实现 UrDetailsService 接⼝即可。接⼝定义如下:
1.返回值
返回值 UrDetails 是⼀个接⼝,定义如下
要想返回 UrDetails 的实例就只能返回接⼝的实现类。Spring Security 中提供了如下的实例。对于我们只需要使⽤⾥⾯的 Ur 类即可。注意 Ur 的全限定路径是:
org.urdetails.Ur
此处经常和系统中⾃⼰开发的 Ur 类弄混
笔记本开机没反应
桂皮的功效在 Ur 类中提供了很多⽅法和属性。
其中构造⽅法有两个,调⽤其中任何⼀个都可以实例化 UrDetails 实现类 Ur 类的实例。⽽三个参数的构造⽅法实际上也是调⽤ 7个参数的构造⽅法
舒肝和胃丸的成分urname:⽤户名
书信的正确格式password:密码
authorities:⽤户具有的权限。此处不允许为 null
相机单反
创城简报此处的⽤户名应该是客户端传递过来的⽤户名。⽽密码应该是从数据库中查询出来的密码。Spring Security 会根据 Ur 中的password 和客户端传递过来的 password 进⾏⽐较如果相同则表⽰认证通过,如果不相同表⽰认证失败。
authorities ⾥⾯的权限对于后⾯学习授权是很有必要的,包含的所有内容为此⽤户具有的权限,如有⾥⾯没有包含某个权限,⽽在做某个事情时必须包含某个权限则会出现 403。通常都是通过 aSeparatedStringToAuthorityList(“”) 来创建authorities 集合对象的。参数时⼀个字符串,多个权限使⽤逗号分隔。
红烧乳鸽的做法
2.⽅法参数
⽅法参数表⽰⽤户名。此值是客户端表单传递过来的数据。默认情况下必须叫 urname,否则⽆法接收。
3.异常
UrnameNotFoundException ⽤户名没有发现异常。在 loadUrByUrname 中是需要通过⾃⼰的逻辑从数据库中取值的。如果通过⽤户名没有查询到对应的数据,应该抛出 UrnameNotFoundException,系统就知道⽤户名没有查询到。