如何讲一个对象保存在shiro的session中 其实在我们登录认证通过以后我们就已经将对象保存在shiro维护的session中了,
// 认证
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken arg0) throws AuthenticationException { String username = (String) arg0.getPrincipal();
// 数据库操作
// 根据当前的用户名查询用户的个人信息,这里主要是密码 User user = new User();
user.setUserName(username);
// 从数据库中查询出来的用户的真实信息
User userDb = service.getUser(user);
//将密码通过加盐和加密然后在和数据库中查找出的密码进行比较
//第一个参数就是我们需要在保存在shiro中的session中的对象,
// 注入第二参数是从数据库中查询出来的正确的密码,shiro会自动判断,如果此密码和刚才传递的密码不知会上抛异常
//第三个参数是盐,
//第四个参数是自定义的realm的名字,改方法可以重写自己随意更改
SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(userDb,userDb.getUserPassword(),
ByteSource.Util.bytes(userDb.getSalt()),getName());
return info;
- 当我们需要shiro管理的session中的对象是可以调用SecurityUtils.getSubject().getPrincipal();
//从shiro的session中取出我们保存的对象,该对象在登录认证成功后保存的 User user = (User) SecurityUtils.getSubject().getPrincipal();
推荐阅读
- Integer常量池结合源码解析
- Java基础|Java 打印空心等腰三角形(方法2)
- gradle 每次运行都会下载依赖的解决办法
- 使用vector代替数组
- 如何获取ResultSet的行数和列数
- Java 时间戳格式化
- Java基础|Android开发——JVM、Dalvik以及ART的区别
- XML|XML报文转Map
- Java 8 时间,字符串和Long时间戳互转
- JAVA基础|JAVA基础(TreeMap键是Student值是String案例)