前军教程网

中小站长与DIV+CSS网页布局开发技术人员的首选CSS学习平台

JavaScript 定时器和延时器(js定时器有哪些 还有区别)

关于定时器setInterval(code, millisecond)和延时器setTimeout(code, millisecond)中第一个参数引号问题思考

对于自定义函数使用双引号必须加上括号;

setInterval("start()", 1000);
setTimeout("start()", 1000);

Springboot 整合 Websocket 轻松实现IM及时通讯

一、方案实践

集成分为三步:添加依赖、增加配置类和消息核心类、前端集成。

1.1、添加依赖

Spring Security自定义Handler处理登录成功失败

#头号新车#

package com.alatus.secrurity.config;

import com.alatus.secrurity.Handler.MyAuthenticationFailureHandler;
import com.alatus.secrurity.Handler.MyAuthenticationSuccessHandler;
import com.alatus.secrurity.Handler.MyLogoutSuccessHandler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;
import static org.springframework.security.config.Customizer.withDefaults;

@Configuration
//开启Spring Security的自定义配置
@EnableWebSecurity
public class WebSecurityConfig {
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http.authorizeHttpRequests((authorize) -> authorize.anyRequest().authenticated());
        http.formLogin(formLogin->{
                    formLogin.loginPage("/login").permitAll()
//                            修改自定义的表单参数
                            .usernameParameter("myUsername")
                            .passwordParameter("myPassword")
                            .failureUrl("/login?failure")
                            .failureHandler(new MyAuthenticationFailureHandler())
//                            这里将默认的登录成功handler改为我们自定义的handler
                            .successHandler(new MyAuthenticationSuccessHandler());
                    //如果不配置permitAll,就会导致出现login页是初始登录页,但是这个页面资源又收到保护,导致跳转回登录页
                    //但是登录页又收到保护,于是又要跳转到登录页,就会形成页面递归导致报错
                });
        http.logout((Logout)->{
            Logout.logoutSuccessHandler(new MyLogoutSuccessHandler());
        });
        http.csrf(csrf->csrf.disable());
        return http.build();
    }
//    @Bean
//    public UserDetailsService userDetailsService() {
////        创建基于内存的用户信息管理器
////        InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
////        创建基于数据库的用户信息管理器
//        DBUserDetailsManager manager = new DBUserDetailsManager();
////        创建UserDetails对象,并设置用户名、密码、角色权限等内容
////        因为用户都在数据库创建保存和查询,所以这里我们使用数据库中的用户信息进行登录验证
////        manager.createUser(User.withDefaultPasswordEncoder().username("admin").password("admin").roles("USER").build());
////        这里我们的manager对象用于管理我们创建的用户信息
//        return manager;
//    }
}

Spring Boot的Security安全控制——应用SpringSecurity!

应用Spring Security

前面介绍了在项目开发时为什么选择Spring Security,还介绍了它的原理。本节开始动手实践Spring Security的相关技术。

Spring Security+OAuth2权限管理(spring security oauth2 jwt)

Spring Security是一个功能强大的安全框架,它提供了一系列功能来保护应用的安全性

OAuth2是一个身份验证的开放协议,用于在不暴露用户身份的情况下进行用户验证

Spring Security提供了身份认证,权限认证,防御常见攻击三个功能

保护应用程序URL,要求对应用程序的任何交付都必须进行身份验证

Spring Security框架实现底层原理

Spring Security底层实现就是Servlet执行链上的Filter实现的

它通过一系列的过滤链,层层Filter走下来,最终走到Servlet

正常情况下,这些Filter都需要被注册在我们的Servlet才能够生效

但是为了更灵活的使用,这些Filter将被我们以Bean的形式管理

Spring Security权限认证和获取用户信息

用户身份认证信息

Principal是用户身份信息,Credentials是用户凭证信息(密码),Auth是用户权限

package com.alatus.secrurity.config;

import com.alatus.secrurity.Handler.MyAuthenticationEntryPoint;
import com.alatus.secrurity.Handler.MyAuthenticationFailureHandler;
import com.alatus.secrurity.Handler.MyAuthenticationSuccessHandler;
import com.alatus.secrurity.Handler.MyLogoutSuccessHandler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;
import static org.springframework.security.config.Customizer.withDefaults;

@Configuration
//开启Spring Security的自定义配置
@EnableWebSecurity
public class WebSecurityConfig {
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http.authorizeHttpRequests((authorize) -> authorize.anyRequest().authenticated());
        http.formLogin(formLogin->{
                    formLogin.loginPage("/login").permitAll()
//                            修改自定义的表单参数
                            .usernameParameter("myUsername")
                            .passwordParameter("myPassword")
                            .failureUrl("/login?failure")
                            .failureHandler(new MyAuthenticationFailureHandler())
//                            这里将默认的登录成功handler改为我们自定义的handler
                            .successHandler(new MyAuthenticationSuccessHandler());
                    //如果不配置permitAll,就会导致出现login页是初始登录页,但是这个页面资源又收到保护,导致跳转回登录页
                    //但是登录页又收到保护,于是又要跳转到登录页,就会形成页面递归导致报错
                });
        http.logout((Logout)->{
            Logout.logoutSuccessHandler(new MyLogoutSuccessHandler());
        });
        http.exceptionHandling(exceptionHandling->{
            exceptionHandling.authenticationEntryPoint(new MyAuthenticationEntryPoint());
        });
        http.csrf(csrf->csrf.disable());
        http.cors(withDefaults());
        return http.build();
    }
//    @Bean
//    public UserDetailsService userDetailsService() {
////        创建基于内存的用户信息管理器
////        InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
////        创建基于数据库的用户信息管理器
//        DBUserDetailsManager manager = new DBUserDetailsManager();
////        创建UserDetails对象,并设置用户名、密码、角色权限等内容
////        因为用户都在数据库创建保存和查询,所以这里我们使用数据库中的用户信息进行登录验证
////        manager.createUser(User.withDefaultPasswordEncoder().username("admin").password("admin").roles("USER").build());
////        这里我们的manager对象用于管理我们创建的用户信息
//        return manager;
//    }
}

Spring Boot的Web应用开发之模板引擎!

模板引擎

模板引擎是为了使用户界面与业务数据分离而产生的,它具有丰富的功能,可以生成特定格式的页面,在Web开发中的模板引擎最后会生成一个标准的HTML文档。模板引擎的解析过程如图4.1所示,其把数据和静态模板相互匹配后,数据会替换其中的变量,最后形成HTML页面展示给用户。

Spring Security自定义登录配置(springsecurity自定义登录controller)

package com.alatus.secrurity.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;
import static org.springframework.security.config.Customizer.withDefaults;

@Configuration
//开启Spring Security的自定义配置
@EnableWebSecurity
public class WebSecurityConfig {
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http.authorizeHttpRequests((authorize) -> authorize.anyRequest().authenticated())
                .formLogin(formLogin->{
                    formLogin.loginPage("/login").permitAll();
                    //如果不配置permitAll,就会导致出现login页是初始登录页,但是这个页面资源又收到保护,导致跳转回登录页
                    //但是登录页又收到保护,于是又要跳转到登录页,就会形成页面递归导致报错
                })
                .httpBasic(withDefaults())
                .logout((logout) -> logout.permitAll());
        http.csrf(csrf->csrf.disable());
        return http.build();
    }
//    @Bean
//    public UserDetailsService userDetailsService() {
////        创建基于内存的用户信息管理器
////        InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
////        创建基于数据库的用户信息管理器
//        DBUserDetailsManager manager = new DBUserDetailsManager();
////        创建UserDetails对象,并设置用户名、密码、角色权限等内容
////        因为用户都在数据库创建保存和查询,所以这里我们使用数据库中的用户信息进行登录验证
////        manager.createUser(User.withDefaultPasswordEncoder().username("admin").password("admin").roles("USER").build());
////        这里我们的manager对象用于管理我们创建的用户信息
//        return manager;
//    }
}

关于电商 API 接口,你了解哪些(电商项目会做的接口)

在电商行业快速发展的今天,电商 API 接口已经成为商家运营中不可或缺的技术工具。无论是提升运营效率、优化用户体验,还是拓展业务渠道,电商 API 接口都发挥着重要作用。然而,许多电商新手可能对 API 接口还知之甚少。本文将带你深入了解电商 API 接口,帮助你更好地利用这一强大工具,提升电商业务的竞争力。
一、什么是电商 API 接口?
API(Application Programming Interface,应用程序编程接口)是一种允许不同软件系统之间进行交互的协议和工具。简单来说,API 接口就像是一个“桥梁”,让不同的应用程序能够共享数据和功能。

<< < 1 2 3 4 5 6 7 8 9 10 > >>
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言