您的位置:首页 > 其它

Shiro SimpleAuthenticationInfo使用

2017-11-25 21:55 232 查看
SimpleAuthenticationInfo这里原理很简单,又有一些值得挖掘的东西。

//此处使用的是user对象,不是username
SimpleAuthenticationInfo authenticationInfo = new SimpleAuthenticationInfo(
user,
user.getPassword(),
getName()
);


这个东西是在realm中的,第一个参数user,这里好多地方传的时候都是user对象,但是都在备注用户名。可是我如果传入username,就会报类型转换问题。

但是在开涛大神的博客中,无状态的shiro里,那边给出的例子是传username。我自己测试的,可以传username,也可以传user对象,仅限他那边一段代码。网上有文章说,这里其实是user和username的集合,后端是分两个字段接收的。由于时间的问题,没有深入里了解这块,传user对象是OK的。

第二个字段是user.getPassword(),注意这里是指从数据库中获取的password。

第三个字段是realm,即当前realm的名称。

看了几篇文章介绍说,这块对比逻辑是先对比username,但是username肯定是相等的,所以真正对比的是password。从这里传入的password(这里是从数据库获取的)和token(filter中登录时生成的)中的password做对比,如果相同就允许登录,不相同就抛出异常。

如果验证成功,最终这里返回的信息authenticationInfo 的值与传入的第一个字段的值相同(我这里传的是user对象)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息