springboot shiro ajax,SpringBoot Shiro 登录成功后返回json数据 shiro使用ajax登录
老规矩,先上代码:
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登录相关推荐
- Spring Security 实战:登录成功后返回 JWT Token
点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 170元买400元书的机会又来啦! 1. 前言 欢迎阅读 Spring Security 实 ...
- 处理文件上传后返回json数据在IE出现文件下载问题(框架是spring boot)
处理文件上传后返回json数据在IE出现文件下载问题(框架是spring boot) 最近做了一个上传xml文件的功能,在谷歌浏览上传没有问题,可以返回正确的结果,但在ie浏览器上上传成功以后,一直提 ...
- Vue项目登录成功后返回到原操作页面
登录超时或者由于其它原因,造成必须重新登录的情况,相信大家都见过这种场景,比较偷懒的办法是登陆成功厚直接回到主页面,但其实我们有更好的解决办法. 作为vue的标配,我们可以利用axios的全局拦截器做 ...
- JSP/Servlet基础——登录成功后返回之前的页面
笔记,只供自己参考,水平相当菜 配置过滤器,拦截用户请求,如果用户没有登录,就转到登录页面,登录成功后再返回到之前的页面 1 在web.xml中加入过滤器的配置 <?xml version=&q ...
- SpringSecurity整合Redis实现单点登录及认证返回json数据
前一阵刚研究了shiro框架,现在再来研究一下SpringSecurity. SpringSecurity是由spring团队开发的,为web应用安全性提供了完整的解决方案的框架.虽然现在使用spri ...
- uniapp之 登录成功后返回之前页面
目录 前言 分析 第一步 代码 代码 一 方式二 温馨提示 小结 前言 在完善小程序效果时,想新增一个当用户没有登录时 点击跳转到某个页面实现交易啊,或者添加什么功能时,检验有没有登录 若没有的话 , ...
- python登录网站后爬取数据_用 Python 登录主流网站,我们的数据爬取少不了它
不论是自然语言处理还是计算机视觉,做机器学习算法总会存在数据不足的情况,而这个时候就需要我们用爬虫获取一些额外数据.这个项目介绍了如何用 Python 登录各大网站,并用简单的爬虫获取一些有用数据,目 ...
- 防止登录成功后重复刷新页面跳回登录页面
登录action:system/Syslogin/sysLogin.do public String sysLogin() { try { //验证码验证 String yzm = Struts2Ut ...
- ajax返回的数据有问题,ajax请求成功返回数据,转成数组后,for遍历取不到值的有关问题...
当前位置:我的异常网» Ajax » ajax请求成功返回数据,转成数组后,for遍历取不到 ajax请求成功返回数据,转成数组后,for遍历取不到值的有关问题 www.myexceptions.ne ...
最新文章
- jdbcTemplate数据库连接的使用
- linux之用xargs删除这个目录下面后缀为txt的文件(包括子目录)
- Azure运维系列 4:安装和使用Azure PowerShell管理云
- python对象属性赋值_关于python对象 中dict属性赋值的疑问
- 计算机公共基础知识书第二版答案,二级计算机公共基础知识课后习题及答案.doc...
- 珠江三角洲 芯片恩仇录
- java中一直gc_如果JVM在执行GC时一直在移动对象,那么它如何解析引用?
- 19-background
- 公司用的非标普通自动化用单片机还是plc_高级电气自动化工程师必备十大技能...
- 微信小程序引入阿里巴巴icon步骤及报错解决
- AttributeError:partially initialized module ''has no attribute''(most likely dueto a circular import
- 如何上色?怎样才能配出好看的颜色?
- 基于java网络版坦克大战游戏
- 高德地图-设置点标注的文本标签
- 给openWrt安装管理界面中文包,顺带安装新界面风格,亲测有效
- 韩顺平JAVA-D5
- 软件工程(四)需求工程与需求分析
- axure切换焦点文本框样式
- 注册腾讯云域名绑定服务器
- java hibernate 自定义排序_java – 如何在hibernate中对关联表进行排序?
热门文章
- 串灯控制盒去掉怎么接_仿木地板瓷砖怎么样?仿木地板瓷砖怎么铺?
- java itext word_Java使用iText生成word文件的解决方案 | 学步园
- macos 字体_巧用 iTerm2 zsh oh-my-zsh 打造炫酷的 MacOS 终端环境
- idea运行maven:No URLs will be polled as dynamic configuration sources
- 超级干货!服务端性能瓶颈定位思路总结
- sqlyog-mysql_SQLyog
- gparted调整分区大小_CentOS Linux系统中用parted分区命令分区
- web控制串口.html,[转]web串口调试助手,浏览器控制串口设备
- clarity, texture and sharpening
- 利用可分离卷积UNet进行木薯叶病分类