老规矩,先上代码:

protected boolean onLoginSuccess(AuthenticationToken token, Subject subject,

ServletRequest request, ServletResponse response) throws Exception {

//WebUtils.redirectToSavedRequest(request, response, JSON.toJSONString(ResultUtil.success()));

// response.reset();

response.setContentType("application/json");

response.setCharacterEncoding("utf-8");

response.getWriter().print(JSON.toJSONString(ResultUtil.success()));

return false;

}

注意事项:onLoginSuccess会将用户的session_id写入head里面进行set-cookie,但是网络上很多使用了response.reset();将头部信息清空了,session写入失败后前台就不会登陆成功。

一、定义登录过滤类

自定义:SunckFormAuthenticationFilter 继承 FormAuthenticationFilter

/**

* 表单过滤类(验证码)

*

* @author LengChen

* @version 1.0

* @date 2020/8/18

*/

public class SunckFormAuthenticationFilter extends FormAuthenticationFilter {

/**

* 登录认证成功后回调方法

* @param request

* @param response

* @throws Exception

*/

protected boolean onLoginSuccess(AuthenticationToken token, Subject subject,

ServletRequest request, ServletResponse response) throws Exception {

//WebUtils.redirectToSavedRequest(request, response, JSON.toJSONString(ResultUtil.success()));

// response.reset();

response.setContentType("application/json");

response.setCharacterEncoding("utf-8");

response.getWriter().print(JSON.toJSONString(ResultUtil.success()));

return false;

}

/**

* 登录失败后回调方法

*

*/

protected boolean onLoginFailure(AuthenticationToken token, AuthenticationException e,

ServletRequest request, ServletResponse response) {

String className = e.getClass().getName(), message = "";

System.out.println(className);

if (IncorrectCredentialsException.class.getName().equals(className) || AuthenticationException.class.getName().equals(className)

|| UnknownAccountException.class.getName().equals(className)){

if(!"-1".equals(StringUtils.isNumeric(e.getMessage()))){

message = e.getMessage();

}else{

message = ResultEnum.SHIRO_ERROR_4.getStringCode();

}

}

else if (StringUtils.isNotBlank(e.getMessage())) {

message = e.getMessage();

}

else{

message = ResultEnum.UNKNOWN_ERROR.getStringCode();

e.printStackTrace(); // 输出到控制台

}

request.setAttribute(getFailureKeyAttribute(), className);

request.setAttribute(Global.DEFAULT_MESSAGE_PARAM, message);

return true;

}

}

二、shiro配置登录过滤器

shiroFilterChainDefinitions.put("/login", "authc");

//自定义拦截器

Mapfilters = shiroFilterFactoryBean.getFilters();

filters.put("authc", new SunckFormAuthenticationFilter());

注:这里配置了之后,login的post登录会首先进入该过滤器报错后才会继续走controller,如果登录成功会直接进行输

springboot shiro ajax,SpringBoot Shiro 登录成功后返回json数据 shiro使用ajax登录相关推荐

  1. Spring Security 实战:登录成功后返回 JWT Token

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 170元买400元书的机会又来啦! 1. 前言 欢迎阅读 Spring Security 实 ...

  2. 处理文件上传后返回json数据在IE出现文件下载问题(框架是spring boot)

    处理文件上传后返回json数据在IE出现文件下载问题(框架是spring boot) 最近做了一个上传xml文件的功能,在谷歌浏览上传没有问题,可以返回正确的结果,但在ie浏览器上上传成功以后,一直提 ...

  3. Vue项目登录成功后返回到原操作页面

    登录超时或者由于其它原因,造成必须重新登录的情况,相信大家都见过这种场景,比较偷懒的办法是登陆成功厚直接回到主页面,但其实我们有更好的解决办法. 作为vue的标配,我们可以利用axios的全局拦截器做 ...

  4. JSP/Servlet基础——登录成功后返回之前的页面

    笔记,只供自己参考,水平相当菜 配置过滤器,拦截用户请求,如果用户没有登录,就转到登录页面,登录成功后再返回到之前的页面 1 在web.xml中加入过滤器的配置 <?xml version=&q ...

  5. SpringSecurity整合Redis实现单点登录及认证返回json数据

    前一阵刚研究了shiro框架,现在再来研究一下SpringSecurity. SpringSecurity是由spring团队开发的,为web应用安全性提供了完整的解决方案的框架.虽然现在使用spri ...

  6. uniapp之 登录成功后返回之前页面

    目录 前言 分析 第一步 代码 代码 一 方式二 温馨提示 小结 前言 在完善小程序效果时,想新增一个当用户没有登录时 点击跳转到某个页面实现交易啊,或者添加什么功能时,检验有没有登录 若没有的话 , ...

  7. python登录网站后爬取数据_用 Python 登录主流网站,我们的数据爬取少不了它

    不论是自然语言处理还是计算机视觉,做机器学习算法总会存在数据不足的情况,而这个时候就需要我们用爬虫获取一些额外数据.这个项目介绍了如何用 Python 登录各大网站,并用简单的爬虫获取一些有用数据,目 ...

  8. 防止登录成功后重复刷新页面跳回登录页面

    登录action:system/Syslogin/sysLogin.do public String sysLogin() { try { //验证码验证 String yzm = Struts2Ut ...

  9. ajax返回的数据有问题,ajax请求成功返回数据,转成数组后,for遍历取不到值的有关问题...

    当前位置:我的异常网» Ajax » ajax请求成功返回数据,转成数组后,for遍历取不到 ajax请求成功返回数据,转成数组后,for遍历取不到值的有关问题 www.myexceptions.ne ...

最新文章

  1. jdbcTemplate数据库连接的使用
  2. linux之用xargs删除这个目录下面后缀为txt的文件(包括子目录)
  3. Azure运维系列 4:安装和使用Azure PowerShell管理云
  4. python对象属性赋值_关于python对象 中dict属性赋值的疑问
  5. 计算机公共基础知识书第二版答案,二级计算机公共基础知识课后习题及答案.doc...
  6. 珠江三角洲 芯片恩仇录
  7. java中一直gc_如果JVM在执行GC时一直在移动对象,那么它如何解析引用?
  8. 19-background
  9. 公司用的非标普通自动化用单片机还是plc_高级电气自动化工程师必备十大技能...
  10. 微信小程序引入阿里巴巴icon步骤及报错解决
  11. AttributeError:partially initialized module ''has no attribute''(most likely dueto a circular import
  12. 如何上色?怎样才能配出好看的颜色?
  13. 基于java网络版坦克大战游戏
  14. 高德地图-设置点标注的文本标签
  15. 给openWrt安装管理界面中文包,顺带安装新界面风格,亲测有效
  16. 韩顺平JAVA-D5
  17. 软件工程(四)需求工程与需求分析
  18. axure切换焦点文本框样式
  19. 注册腾讯云域名绑定服务器
  20. java hibernate 自定义排序_java – 如何在hibernate中对关联表进行排序?

热门文章

  1. 串灯控制盒去掉怎么接_仿木地板瓷砖怎么样?仿木地板瓷砖怎么铺?
  2. java itext word_Java使用iText生成word文件的解决方案 | 学步园
  3. macos 字体_巧用 iTerm2 zsh oh-my-zsh 打造炫酷的 MacOS 终端环境
  4. idea运行maven:No URLs will be polled as dynamic configuration sources
  5. 超级干货!服务端性能瓶颈定位思路总结
  6. sqlyog-mysql_SQLyog
  7. gparted调整分区大小_CentOS Linux系统中用parted分区命令分区
  8. web控制串口.html,[转]web串口调试助手,浏览器控制串口设备
  9. clarity, texture and sharpening
  10. 利用可分离卷积UNet进行木薯叶病分类