![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SpringSecurity
文章平均质量分 57
csdn_20210509
本人是个小小程序员,此博客一是为了激励自己学习,二是为了记录自己的学习历程,以便及时回顾相关知识。
展开
-
SpringBoot集成SpringSecurity(十七、手机号登录)
前言SpringSecurity默认不支持短信验证码登录,而现在手机验证码登录随处可见,下面对SpringSecurity进行集成手机短信登录。实现public class MobileAuthenticationToken extends AbstractAuthenticationToken { private static final long serialVersionUID = 540L; private final Object principal; // 认证前是手机号,原创 2021-05-23 14:41:27 · 927 阅读 · 0 评论 -
SpringBoot集成SpringSecurity(十六、使用JSON登录)
前言SpringSecurity默认使用表单登录,不支持Json方式登录,接下来设置既可以支持表单登录,也可以支持Json方式登录。实现public class SignInFilter extends UsernamePasswordAuthenticationFilter { @Override public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse re原创 2021-05-23 13:58:16 · 564 阅读 · 0 评论 -
SpringBoot集成SpringSecurity(十五、添加验证码)
前言为什么需要添加验证码呢,如果没有验证码,不是也可以登录吗?验证码的主要作用是为了区分是人操作还是机器操作,防止机器自动注册和登录;如果没有验证码环节,机器可以无限制的注册用户,压垮数据库,当然登录也是一样,可以通过机器登录,然后肆无忌惮地朝网络上倾倒大量的、无意义的僵尸信息,垃圾邮件、垃圾广告、垃圾评论。实现添加依赖<dependency> <groupId>com.github.penggle</groupId> <artifactId>ka原创 2021-05-22 15:14:54 · 298 阅读 · 0 评论 -
SpringBoot集成SpringSecurity(十四、关闭默认登录页)
前言用户在未登录的时候,访问后端服务,默认会跳转到默认登录页,这种情况在前后未分离,或者说半分离的情况下是没有问题的,但是在前后端完全分离的情况,像现在比较流行的vue.js,前后端分开部署,如果在用户未登录情况下访问后端,返回默认的登录显然是不行。下面通过配置,在用户未登录情况下访问后端时,返回之前封装的统一结果,然后前端通过状态码进行判断,跳转到自定义登录页。实现创建一个授权异常处理器类AuthenticationExceptionHandler并实现AuthenticationEntryPoin原创 2021-05-22 11:40:12 · 5548 阅读 · 2 评论 -
SpringBoot集成SpringSecurity(十三、数据库方式配置用户)
前言前面权限配置介绍了两种方式,一种是基于注解的权限配置,一种是基于配置文件的权限配置。虽然两种方式都可以实现权限拦截,但是基于注解的方式每个方法上都要添加注解,太过于分散,不好管理;而基于配置文件的方式,虽然可以将所有的配置在配置文件中配置,但是每次添加接口都要在相应的配置类中添加配置,而且没法跟数据库关联起来。接下来,进行优化。实现创建授权AccessInterception类,实现FilterInvocationSecurityMetadataSource接口;主要作用是将当前请求需要的权限返回原创 2021-05-22 10:40:54 · 249 阅读 · 0 评论 -
SpringBoot集成SpringSecurity(十二、数据库方式配置用户)
前言之前已经在数据库中创建好了相应的表,下面代码实现。实体类这里就直接通过代码生成器进行生成实体类。代码生成器如何使用在前面介绍过,这里不再进行介绍。依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version原创 2021-05-20 23:44:50 · 308 阅读 · 2 评论 -
SpringBoot集成SpringSecurity(十一、数据库方式配置用户)
前言在之前文章中,用户是在内存中配置的,接下来将用户信息存放到数据库中,然后从数据库读取用户信息。表设计这里会设计到用户,角色,权限表创建用户表DROP TABLE IF EXISTS `sys_user`;CREATE TABLE `sys_user` ( `id` char(19) COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键id', `nick_name` varchar(64) COLLATE utf8mb4_general_c原创 2021-05-18 22:45:22 · 342 阅读 · 0 评论 -
SpringBoot集成SpringSecurity(十、记住我)
前言前面介绍了设置用户最大登录数,这节实现记住我功能。配置数据库记住我需要用到数据库,所以这里先配置以下Mysql数据库添加依赖 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <原创 2021-05-17 22:15:09 · 318 阅读 · 5 评论 -
SpringBoot集成SpringSecurity(九、设置用户最大登录数)
前言在项目中,可能会有这样的需求,只允许用户同一时间只能在一处登录。实现设置Session过期策略,创建SessionExpiredStrategy 类@Componentpublic class SessionExpiredStrategy implements SessionInformationExpiredStrategy { @Autowired private SignInFailureHandler signInFailureHandler; @Overri原创 2021-05-16 22:18:22 · 902 阅读 · 3 评论 -
SpringBoot集成SpringSecurity(八、无权限响应Json)
前言在配置权限章节中,我们看到当用户没有权限时,浏览器中显示下面代码,这显然对用户来说不友好,因为根本看不懂这些。接下来,我们通过json的形式,响应一个友好的提示。Whitelabel Error PageThis application has no explicit mapping for /error, so you are seeing this as a fallback.Sun May 16 18:38:30 CST 2021There was an unexpected erro原创 2021-05-16 18:58:52 · 648 阅读 · 0 评论 -
SpringBoot集成SpringSecurity(七、退出成功响应Json)
前言前面介绍了登录失败时候响应的Json,下面接着介绍退出成功时响应Json实现跟之前一样,新建一个SignOutSuccessHandler类,实现以下代码@Componentpublic class SignOutSuccessHandler implements LogoutSuccessHandler { @Override public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse原创 2021-05-16 17:27:53 · 195 阅读 · 0 评论 -
SpringBoot集成SpringSecurity(六、登录失败响应Json)
前言之前已经介绍了登录成功响应Json,那么登录失败响应Json跟之前一样的原理,下面进行实现。实现新建SignInFailureHandler@Componentpublic class SignInFailureHandler implements AuthenticationFailureHandler { @Override public void onAuthenticationFailure(HttpServletRequest request, HttpServlet原创 2021-05-16 15:08:57 · 541 阅读 · 0 评论 -
SpringBoot集成SpringSecurity(五、登录成功响应Json)
前言在前后端分离项目中,页面的跳转都是交由前端来处理,后端只需要返回Json数据即可。实现使用之前写好的统一返回结果类Result,并将Result对象转化成json字符串响应。@Componentpublic class SignInSuccessHandler implements AuthenticationSuccessHandler { @Override public void onAuthenticationSuccess(HttpServletRequest req原创 2021-05-16 14:42:22 · 492 阅读 · 0 评论 -
SpringBoot集成SpringSecurity(四、内存方式配置权限)
前言在前面已经介绍了通过注解方式配置权限,我们接着上一节继续介绍通过**内存方式配置权限*。权限配置访问权限还是在SpringSecurityConfig类中通过重写父类方法进行配置添加接口之前在一、初体验中创建过Controller了,这里只需要在此基础上添加以下代码。 @GetMapping("user") @PreAuthorize("hasAuthority('user')") public String user(){ return "user原创 2021-05-16 11:19:17 · 228 阅读 · 0 评论 -
SpringBoot集成SpringSecurity(三、注解方式配置权限)
前言SpringBoot集成SpringSecurity(二、内存方式配置用户)中已经介绍了在内存中配置用户,我们接着上一节继续介绍内存方式配置权限。配置添加用户在上一节的基础上,我们再添加一个用户名为admin,密码123,权限admin的用户。 @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthenticat原创 2021-05-15 18:01:21 · 547 阅读 · 0 评论 -
SpringBoot集成SpringSecurity(二、内存方式配置用户)
前言在SpringBoot集成SpringSecurity(一、初体验)中已经介绍了两种原创 2021-05-15 12:20:39 · 394 阅读 · 0 评论 -
SpringBoot集成SpringSecurity(一、初体验)
前言安全不管是生活中,还是工作中,都是尤为重要的。在大数据时代下,有些信息我们可以公开,而有些数据并不想公开,那么在项目开发过程中,系统如何保证它的安全性了?SpringSecurity就是专门为保证系统安全性而开发的,接下来介绍如何使用SpringSecurity。依赖SpringBoot集成SpringSecurity也非常简单,只需要引入下面依赖即可<dependency> <groupId>org.springframework.boot</groupId&g原创 2021-05-12 21:38:18 · 333 阅读 · 3 评论