如何将保存在shiro管理的session中的对象取出来

如何讲一个对象保存在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;
  1. 当我们需要shiro管理的session中的对象是可以调用SecurityUtils.getSubject().getPrincipal();
     //从shiro的session中取出我们保存的对象,该对象在登录认证成功后保存的
    	User user = (User) SecurityUtils.getSubject().getPrincipal();
    

``

你可能感兴趣的:(java基础)