Shiro的session问题

发布于 2016/06/27 09:25
阅读 408
收藏 0
通过HttpServletRequest获取到Session后向里面setAttribute了一个属性(内容是4位字符串,做验证码功能),可是从Shiro的Session中取出的时候得到的是一串32位的字符串,如何解决呢
加载中
0
灯光下的宁静
灯光下的宁静

你把获取值   和存放值的代码贴出来

才好帮你

卒
刚贴了一下代码
0
卒
 

下面的是通过shiro验证

// 校验登录验证码
if (LoginController.isValidateCodeLogin(token.getUsername(), false, false)){
	Session session = null;
  try{
			Subject subject = SecurityUtils.getSubject();
			Session session = subject.getSession(false);
			if (session == null){
				session = subject.getSession();
			}
		}catch (InvalidSessionException e){
			
		}
	String code = (String)session.getAttribute(ValidateCodeServlet.VALIDATE_CODE);
	if (token.getCaptcha() == null || !token.getCaptcha().toUpperCase().equals(code)){
		throw new AuthenticationException("msg:验证码错误, 请重试.");
	}
}

下面是写入验证码

/* * 生成字符
*/
private void createImage(HttpServletRequest request,
 HttpServletResponse response) {
  String s = createCharacter(g);
  request.getSession().setAttribute(VALIDATE_CODE, s);
}




0
foy
foy
 断点,确认 String s = createCharacter(g); 返回值是期望的4位字串?
卒
是的 s是4位字符串
0
foy
foy
Subject subject = SecurityUtils.getSubject();
            Session session = subject.getSession(false);
            if(session ==null){
                session = subject.getSession();
            }


这几行直接用 session = subject.getSession();试试?

卒
还是不行...
0
灯光下的宁静
灯光下的宁静

我估计这项目你是半截开发的吧,或者是用别人的demo修改的?   你看看你shiro的session的xml配置有没有添加加密的配置?

估计能解决你的问题  

卒
嗯嗯 好的 我再多看看
返回顶部
顶部