您好,登录后才能下订单哦!
这篇文章将为大家详细讲解有关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接口的安全性?
关于“SpringBoot如何集成Shiro安全验证”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。