DiCraft
古来云海茫茫,八表神游,顶峰何在?行尽九洲四海,人间自有,谪仙风采。

“诗酒琴棋客”
”风花雪月天“
“义气惭豪杰”
”云心慕剑仙“
最新推荐
最新文章

【shiro-安全框架】入门基础学习

安全框架常见的由两种,一种是shiro,另一种是spring security。 shiro相较于后者更加简洁,spring security可以无缝的整合spring框架......

【Spring Security】安全框架学习(十一)

本身springboot就自带了解决跨域问题的方法,但是光用springboot的那一套显然是不够用的,我们现在的资源请求都是交给spring security帮助我们进行管理、保护。专业的说法叫 预检请求,如果一个请求时非简单请求,会提前发送一个OPTIONS的预检请求,来决定是否发送真实请求,可以去看看HTTP CORS规则文档。浏览器出于安全的考虑,使用XMLHttpRequest对象发起H......

【Spring Security】安全框架学习(十)

我们还希望在认证失败或者是授权失败的情况下也能和我们的接口一样返回相同结构的json,这样可以让前端能对响应进行统一的处理。要实现这个功能我们需要知道Spring Security的异常处理机制。在Spring Security中,如果我们在认证或者授权的过程中出现了异常会被ExceptionTranslationFilter捕获到。在ExceptionTranslationFilter中会去判断......

【Spring Security】安全框架学习(九)

一个权限对应多个用户,一个用户也会有多个权限,看起来是一个多对多的关系,但是从用户的角度看是一个一对多的关系。要注意的是我们查询出来的结果需要去重,原因是因为每一个用户可以有多个角色,而每一个角色可能拥有的权限会有相同的地方,所以要用distinct来去重。在开发的过程中,给一个用户挨个赋予权限显然比较麻烦,所以我们可以建立起一个角色表,直接给用户赋予角色信息,即可将对应的权限通过角色间接的给用户......

【Spring Security】安全框架学习(八)

在上面的代码中,我们可以看到一个泛型 SimpleGrantedAuthority ,它是由Spring提供的,但是我们在存储进redis中的时候,为了安全考虑,默认情况下是不会把SimpleGrantedAuthority进行序列化存入的,如果不做操作的话,java会报异常。所以我们还需要在后台进行用户权限的判断,判断当前用户是否有相应的权限,必须基于所需权限才能进行相应的操作。这我们项目中主要......

【Spring Security】安全框架学习(七)

我们只需要定义一个登陆接口,然后获取SecurityContextHolder中的认证信息,删除redis中对应的数据即可。 这里只需要在之前的 LoginService 和 LoginServiceImpl 文件中,添加相应的代码。同时在 LoginController 中提供给前端对应的api。......

【Spring Security】安全框架学习(六)

我们需要自定义一个过滤器,这个过滤器会去获取请求头中的token,对token进行解析取出其中的userid。 使用userid去redis中获取对应的LoginUser对象。 然后封装Authentication对象存入SecurityContextHolder。......

【Spring Security】安全框架学习(五)

接下我们需要自定义登陆接口,然后让SpringSecurity对这个接口放行。 在 2.3.2 准备工作中我们提供了一个jwt工具类,里面有3种重载形式,详情参考之前的源码。如果要使用jwt工具类,jdk1.8以上的版本可能需要导入这三个包 jjwt-api, jjwt-impl, jwt-jackson,jdk1.8一般来说没必要导。 ......

【Spring Security】安全框架学习(四)

从之前的分析我们可以知道,我们可以自定义一个UserDetailsService,让SpringSecurity使用我们的UserDetailsService。我们自己的UserDetailsService可以从数据库中查询用户名和密码。默认使用的PasswordEncoder要求数据库中的密码格式为:{id}password。它会根据id去判断密码的加密方式。......

【Spring Security】安全框架学习(三)

实际上分了两部分,一个是登陆一个是校验。 登陆:①自定义登陆的接口,调用providerManager的方法进行认证 ​ 如果认证通过,则生成JWT;把用户信息缓存到redis中。 ​ ②自定义UserDetailService,实现查询数据库 校验:①定义JWT认证过滤器,获取token并解析token ​ ②获取token中的userId,从redis中获取用户信息,存......