温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

SpringBoot如何集成Shiro安全验证

发布时间:2021-11-23 11:20:01 来源:亿速云 阅读:164 作者:小新 栏目:开发技术

这篇文章将为大家详细讲解有关SpringBoot如何集成Shiro安全验证,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

 


Shiro工作原理是服务端将SessionID写入客户端浏览器的cookie中,客户端发起请求时携带cookie信息,服务端从cookie中读取sessionId,以此来维持会话。但是在前后端分离模式下,我们的后端服务不能将sessionId写到请求浏览器cookie中,而且存在跨域问题,基于安全方面原因,ajax请求也都不带cookie信息,后端程序没办法取得sessionId,也就无法验证登录。

实现思路:将SessionID返回前端做保存(写入cookie或localStage中),然后前端发起请求的时候,将Sessionid传给服务器,服务器获取这个SessionID,再取对应的session

  后台登录接口,需要将ShiroSession的SessionId返回给前端,前端保存到cookie中,

登录成功后,前端JS中接收sessionID(token),并保存到cookie中,

第一,修改Shiro安全配置,重写SessionManager类,创建一个MySessionManager类继承DefaultWebSessionManager类,重写getSessionId方法,先从cookie获取SessionID,取不到再从requestHeader中获取,如取不到再从请求参数中获取

 第二,修改Shiro配置中的session管理类,配置为我们的MySessionManager类,这里用到了redis作为缓存管理器,

第三,在项目中添加一个过滤器类CrosFilter,处理跨域问题,其中,OPTIONS预处理请求,要返回200,表示成功,否则ajax发起post,get等请求,服务器不能响应。另外,Access-Control-Allow-Headers配置项中,要设置Authorization,而且,Access-Control-Allow-Credentials 要设置成true.

-最后,前端ajax发起请求时,需要添加请求头信息,requestHeader添加Authorization项,值为登录时返回的sessionID($.cookie("token")),设置crossDomain为true。最后,前端ajax发起请求时,需要添加请求头信息,requestHeader添加Authorization项,值为登录时返回的sessionID($.cookie("token")),设置crossDomain为true。

SpringBoot前后端分离API接口怎么保证API接口的安全性?

前端用vue写的,直接放在nginx下面后端使用SpringBoot作为服务端提供API接口给前端访问,

前端分为公共访问页面和登录后访问页面。登录后访问的可以使用JWT进行接口鉴权。但是没有登录的情况如何保护接口不被恶意的调用?通过请求request来获取ip.记录ip请求次数到redis缓存.当ip请求频率过高时,屏蔽该ip

关于“SpringBoot如何集成Shiro安全验证”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI