做电焊加工的网站wordpress首页幻灯片尺寸

news/2025/10/3 1:26:38/文章来源:
做电焊加工的网站,wordpress首页幻灯片尺寸,行业门户网站的优化怎么做yps行业门户系统,源码商城网站源码松哥周末抽空给 Spring Security 系列也录制了一套视频#xff0c;目录如下#xff1a;感兴趣的小伙伴戳这里--Spring BootVue微人事视频教程今天的话题来自一个小伙伴在微信上的提问#xff1a;看到这个问题#xff0c;松哥忽然想到我自己之前写过 Spring BootSwagger… 松哥周末抽空给 Spring Security 系列也录制了一套视频目录如下感兴趣的小伙伴戳这里--Spring BootVue微人事视频教程今天的话题来自一个小伙伴在微信上的提问看到这个问题松哥忽然想到我自己之前写过 Spring BootSwagger 的用法SpringBoot 整合 Swagger2也写过 OAuth2 Jwt 的用法想让 OAuth2 和 JWT 在一起愉快玩耍请看松哥的表演但是还没有将这两个结合在一起写过所以小伙伴们对此有了疑问想一想这还是一个非常常见的问题因为现在使用令牌登录的场景越来越多在这种情况下如果使用 Swagger 来测试接口要怎么在请求头中携带 Token 呢今天松哥就来和大家聊一聊。1.项目规划如果小伙伴们没有看过松哥之前发的 OAuth2 系列文章建议一定先看下(公众号江南一点雨后台回复 OAuth2 获取)再来看本文内容否则接下来的内容可能会犯迷糊。这里松哥搭建一个 OAuth2JWT 的环境来做演示。一共搭建两个服务服务名端口备注auth-server8080授权服务器user-server8081资源服务器我稍微解释一下auth-server 就是我的资源服务器用来颁发 JWT 令牌。user-server 则是资源服务器访问 user-server 上的资源都需要携带令牌才能访问。swagger 则用来给 user-server 上的接口生成文档。OK这是我们项目的一个大致规划。2.环境搭建接下来我们来搭建 OAuth2 测试环境。2.1 授权服务器搭建首先我们搭建一个名为 auth-server 的授权服务搭建的时候选择如下三个依赖WebSpring Cloud SecuritySpirng Cloud OAuth2项目创建完成后首先提供一个 Spring Security 的基本配置Configurationpublic class SecurityConfig extends WebSecurityConfigurerAdapter {    Bean    PasswordEncoder passwordEncoder() {        return new BCryptPasswordEncoder();    }    Override    Bean    public AuthenticationManager authenticationManagerBean() throws Exception {        return super.authenticationManagerBean();    }    Override    protected void configure(AuthenticationManagerBuilder auth) throws Exception {        auth.inMemoryAuthentication()                .withUser(sang)                .password(passwordEncoder().encode(123))                .roles(admin)                .and()                .withUser(javaboy)                .password(passwordEncoder().encode(123))                .roles(user);    }    Override    protected void configure(HttpSecurity http) throws Exception {        http.csrf().disable().formLogin();    }}在这段代码中为了代码简洁我就不把 Spring Security 用户存到数据库中去了直接存在内存中。这里我创建了一个名为 sang 的用户密码是 123角色是 admin。同时我还配置了一个表单登录。这段配置的目的实际上就是配置用户。例如你想用微信登录第三方网站在这个过程中你得先登录微信登录微信就要你的用户名/密码信息那么我们在这里配置的其实就是用户的用户名/密码/角色信息。需要注意的是在当前案例中我将采用 OAuth2 中的 password 模式进行登录因此这里还需要明确的提供一个 AuthenticationManager 的 Bean。基本的用户信息配置完成后接下来我们来配置授权服务器。首先来配置 TokenStoreConfigurationpublic class AccessTokenConfig {    Bean    TokenStore tokenStore() {        return new JwtTokenStore(jwtAccessTokenConverter());    }    Bean    JwtAccessTokenConverter jwtAccessTokenConverter() {        JwtAccessTokenConverter converter  new JwtAccessTokenConverter();        converter.setSigningKey(javaboy);        return converter;    }}TokenStore 我们使用 JwtTokenStore 这个实例。使用了 JWTaccess_token 实际上就不用存储了(无状态登录服务端不需要保存信息)因为用户的所有信息都在 jwt 里边所以这里配置的 JwtTokenStore 本质上并不是做存储。另外我们还提供了一个 JwtAccessTokenConverter这个 JwtAccessTokenConverter 可以实现将用户信息和 JWT 进行转换(将用户信息转为 jwt 字符串或者从 jwt 字符串提取出用户信息)。另外在 JWT 字符串生成的时候我们需要一个签名这个签名需要自己保存好。接下来对授权服务器进行详细配置EnableAuthorizationServerConfigurationpublic class AuthorizationServer extends AuthorizationServerConfigurerAdapter {    Autowired    TokenStore tokenStore;    Autowired    ClientDetailsService clientDetailsService;    Autowired    AuthenticationManager authenticationManager;    Autowired    PasswordEncoder passwordEncoder;    Autowired    JwtAccessTokenConverter jwtAccessTokenConverter;    Bean    AuthorizationServerTokenServices tokenServices() {        DefaultTokenServices services  new DefaultTokenServices();        services.setClientDetailsService(clientDetailsService);        services.setSupportRefreshToken(true);        services.setTokenStore(tokenStore);        services.setAccessTokenValiditySeconds(60 * 60 * 24 * 2);        services.setRefreshTokenValiditySeconds(60 * 60 * 24 * 7);        TokenEnhancerChain tokenEnhancerChain  new TokenEnhancerChain();        tokenEnhancerChain.setTokenEnhancers(Arrays.asList(jwtAccessTokenConverter));        services.setTokenEnhancer(tokenEnhancerChain);        return services;    }    Override    public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {        security.allowFormAuthenticationForClients();    }    Override    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {        clients.inMemory()                .withClient(javaboy)                .secret(passwordEncoder.encode(123))                .resourceIds(res1)                .authorizedGrantTypes(password, refresh_token)                .scopes(all)                .redirectUris(http://localhost:8082/index.html);    }    Override    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {        endpoints                .authenticationManager(authenticationManager)                .tokenServices(tokenServices());    }}这段代码有点长我来给大家挨个解释创建 AuthorizationServer 类继承自 AuthorizationServerConfigurerAdapter来对授权服务器做进一步的详细配置AuthorizationServer 类记得加上 EnableAuthorizationServer 注解表示开启授权服务器的自动化配置。在 AuthorizationServer 类中我们其实主要重写三个 configure 方法。AuthorizationServerSecurityConfigurer 用来配置令牌端点的安全约束也就是这个端点谁能访问谁不能访问。ClientDetailsServiceConfigurer 用来配置客户端的详细信息在之前文章中松哥和大家讲过授权服务器要做两方面的检验一方面是校验客户端另一方面则是校验用户校验用户我们前面已经配置了这里就是配置校验客户端。客户端的信息我们可以存在数据库中这其实也是比较容易的和用户信息存到数据库中类似但是这里为了简化代码我还是将客户端信息存在内存中这里我们分别配置了客户端的 idsecret、资源 id、授权类型、授权范围以及重定向 uri。授权类型我在之前文章中和大家一共讲了四种四种之中不包含 refresh_token 这种类型但是在实际操作中refresh_token 也被算作一种。AuthorizationServerEndpointsConfigurer 这里用来配置令牌的访问端点和令牌服务。tokenServices 这个 Bean 主要用来配置 Token 的一些基本信息例如 Token 是否支持刷新、Token 的存储位置、Token 的有效期以及刷新 Token 的有效期等等。Token 有效期这个好理解刷新 Token 的有效期我说一下当 Token 快要过期的时候我们需要获取一个新的 Token在获取新的 Token 时候需要有一个凭证信息这个凭证信息不是旧的 Token而是另外一个 refresh_token这个 refresh_token 也是有有效期的。好了如此之后我们的授权服务器就算是配置完成了接下来我们启动授权服务器。如果小伙伴们对于上面的配置感到迷糊可以在公众号后台回复 OAuth2先系统的学习一下松哥的 OAuth2 教程。2.2 资源服务器搭建接下来我们搭建一个资源服务器。大家网上看到的例子资源服务器大多都是和授权服务器放在一起的如果项目比较小的话这样做是没问题的但是如果是一个大项目这种做法就不合适了。资源服务器就是用来存放用户的资源例如你在微信上的图像、openid 等信息用户从授权服务器上拿到 access_token 之后接下来就可以通过 access_token 来资源服务器请求数据。我们创建一个新的 Spring Boot 项目叫做 user-server 作为我们的资源服务器创建时添加如下依赖项目创建成功之后先把前面的 AccessTokenConfig 拷贝到资源服务器上然后添加如下配置ConfigurationEnableResourceServerpublic class ResourceServerConfig extends ResourceServerConfigurerAdapter {    Autowired    TokenStore tokenStore;    Override    public void configure(ResourceServerSecurityConfigurer resources) throws Exception {        resources.resourceId(res1).tokenStore(tokenStore);    }    Override    public void configure(HttpSecurity http) throws Exception {        http.authorizeRequests()                .antMatchers(/admin/**).hasRole(admin)                .anyRequest().authenticated();    }}这段配置代码很简单我简单的说一下首先在 configure 方法中配置资源 ID 和 TokenStore这里配置好之后会自动调用 JwtAccessTokenConverter 将 jwt 解析出来jwt 里边就包含了用户的基本信息所以就不用远程校验 access_token 了。最后配置一下资源的拦截规则这就是 Spring Security 中的基本写法我就不再赘述。接下来我们再来配置两个测试接口RestControllerpublic class HelloController {    GetMapping(/hello)    public String hello() {        return hello;    }    GetMapping(/admin/hello)    public String admin() {        return admin;    }}如此之后我们的资源服务器就算配置成功了。2.3 测试分别启动授权服务器和资源服务器先访问授权服务器获取 access_token再利用拿到的 access_token 去访问资源服务器OK测试没问题。3.整合 Swagger接下来我们在 user-server 中加入 swagger 功能首先我们加入 swagger 依赖 dependency     groupIdio.springfoxgroupId     artifactIdspringfox-swagger2artifactId     version2.9.2version dependency dependency     groupIdio.springfoxgroupId     artifactIdspringfox-swagger-uiartifactId     version2.9.2version dependency这里加入的依赖有两个一个用来生成接口数据另一个 swagger-ui 用来做数据展示。3.1 认证方式一请求头加参数这里给大家介绍两种先来看第一种。先配置一个 Docket 实例如下ConfigurationEnableSwagger2public class Swagger2Config {    Bean    Docket docket() {        return new Docket(DocumentationType.SWAGGER_2)                .select()                .apis(RequestHandlerSelectors.basePackage(org.javaboy.oauth2.res.controller))                .paths(PathSelectors.any())                .build()                .securityContexts(Arrays.asList(securityContexts()))                .securitySchemes(Arrays.asList(securitySchemes()))                .apiInfo(new ApiInfoBuilder()                        .description(接口文档的描述信息)                        .title(微人事项目接口文档)                        .contact(new Contact(javaboy,http://www.javaboy.org,wangsong0210gmail.com))                        .version(v1.0)                        .license(Apache2.0)                        .build());    }    private SecurityScheme securitySchemes() {        return new ApiKey(Authorization, Authorization, header);    }    private SecurityContext securityContexts() {        return SecurityContext.builder()                        .securityReferences(defaultAuth())                        .forPaths(PathSelectors.any())                        .build();    }    private List defaultAuth() {        AuthorizationScope authorizationScope  new AuthorizationScope(xxx, 描述信息);        AuthorizationScope[] authorizationScopes  new AuthorizationScope[1];        authorizationScopes[0]  authorizationScope;        return Arrays.asList(new SecurityReference(Authorization, authorizationScopes));    }}这里的配置稍微有点长我来给大家解释下首先通过 EnableSwagger2 注解启用 Swagger2。配置一个 Docket Bean这个 Bean 中配置映射路径和要扫描的接口的位置。在 apiInfo 中主要配置一下 Swagger2 文档网站的信息例如网站的 title网站的描述联系人的信息使用的协议等等。通过 securitySchemes 来配置全局参数这里的配置是一个名为 Authorization 的请求头(OAuth2 中需要携带的请求头)。securityContexts 则用来配置有哪些请求需要携带 Token这里我们配置了所有请求。配置完成后我们还需要给 swagger-ui 放行否则 swagger-ui 相关的静态资源会被 Spring Security 拦截下来Configurationpublic class SecurityConfig extends WebSecurityConfigurerAdapter {    Override    public void configure(WebSecurity web) throws Exception {        web.ignoring().antMatchers(/swagger-ui.html)                .antMatchers(/webjars/**)                .antMatchers(/v2/**)                .antMatchers(/swagger-resources/**);    }}配置完成后重启 user-server浏览器输入 http://localhost:8081/swagger-ui.html结果如下大家可以看到页面中多了一个 Authorize 按钮点击该按钮输入 Bearer ${token}如下输入完成后点击 Authorize 按钮完成认证接下来user-server 中的各种接口就可以直接调用测试了。上面这种方式比较通用不仅仅适用于 OAuth2也适用于其他一些自定义的 token 登录方式。但是这种方式需要开发者先通过其他途径获取到 access_token有的人会觉得这样有点麻烦那么有没有更好的办法呢请看方式二。3.2 认证方式二认证方式二就是直接在 Swagger 中填入认证信息这样就不用从外部去获取 access_token 了效果如下我们来看下这个怎么配置。由于 swagger 去请求 /oauth/token 接口会跨域所以我们首先要修改 auth-server 使之支持跨域主要是两方面的修改首先是配置 CorsFilter允许跨域如下Configurationpublic class GlobalCorsConfiguration {    Bean    public CorsFilter corsFilter() {        CorsConfiguration corsConfiguration  new CorsConfiguration();        corsConfiguration.setAllowCredentials(true);        corsConfiguration.addAllowedOrigin(*);        corsConfiguration.addAllowedHeader(*);        corsConfiguration.addAllowedMethod(*);        UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource  new UrlBasedCorsConfigurationSource();        urlBasedCorsConfigurationSource.registerCorsConfiguration(/**, corsConfiguration);        return new CorsFilter(urlBasedCorsConfigurationSource);    }}然后在 SecurityConfig 中开启跨域支持ConfigurationOrder(Ordered.HIGHEST_PRECEDENCE)public class SecurityConfig extends WebSecurityConfigurerAdapter {    ...    ...    Override    protected void configure(HttpSecurity http) throws Exception {        http                .requestMatchers().antMatchers(HttpMethod.OPTIONS, /oauth/**)                .and()                .csrf().disable().formLogin()                .and()                .cors();    }}经过这两步的配置服务端的跨域支持就开启了。接下来我们在 user-server 中修改关于 Docket bean 的定义ConfigurationEnableSwagger2public class Swagger2Config {    Bean    Docket docket() {        return new Docket(DocumentationType.SWAGGER_2)                .select()                .apis(RequestHandlerSelectors.basePackage(org.javaboy.oauth2.res.controller))                .paths(PathSelectors.any())                .build()                .securityContexts(Arrays.asList(securityContext()))                .securitySchemes(Arrays.asList(securityScheme()))                .apiInfo(new ApiInfoBuilder()                        .description(接口文档的描述信息)                        .title(微人事项目接口文档)                        .contact(new Contact(javaboy,http://www.javaboy.org,wangsong0210gmail.com))                        .version(v1.0)                        .license(Apache2.0)                        .build());    }    private AuthorizationScope[] scopes() {        return new AuthorizationScope[]{                new AuthorizationScope(all, all scope)        };    }    private SecurityScheme securityScheme() {        GrantType grant  new ResourceOwnerPasswordCredentialsGrant(http://localhost:8080/oauth/token);        return new OAuthBuilder().name(OAuth2)                .grantTypes(Arrays.asList(grant))                .scopes(Arrays.asList(scopes()))                .build();    }    private SecurityContext securityContext() {        return SecurityContext.builder()                .securityReferences(Arrays.asList(new SecurityReference(OAuth2, scopes())))                .forPaths(PathSelectors.any())                .build();    }}这段配置跟前面的类似主要是 SecurityScheme 不同。这里采用了 OAuthBuilder 来构建构建时即得配置 token 的获取地址。好了配置完成重启 auth-server 和 user-server 进行测试。测试效果就是松哥前面给出的图片不再赘述。这种方式最大的好处就是不用通过其他途径获取 access_token直接在 swagger-ui 页面输入 password 模式的认证参数即可。非常方便仅限于 OAuth2 模式。4.小结好了今天就和小伙伴们介绍了在 Swagger 请求中如何修改请求头的问题感兴趣的小伙伴可以下来试试哦本文案例下载地址https://github.com/lenve/spring-security-samples好啦小伙伴们如果觉得有收获记得点个在看鼓励下松哥哦今日干货刚刚发表查看:66666回复:666公众号后台回复 ssm免费获取松哥纯手敲的 SSM 框架学习干货。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/925472.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站建设与运营课程总结qq音乐的网站建设信息

Java框架可以变,基础不会变。 Java 是一门高级编程语言,由 Sun Microsystems(后来被 Oracle 收购)所开发,于 1995 年首次发布。Java 的设计目标是“一次编写,到处运行”(Write Once, Run Anywhere),也被称为 WORA。这意味着可以在不同的操作系统和硬件平台上运行同样…

US$34 Super Auto Decoder and Pick Tool KW1 (Left)

Super Auto Decoder and Pick Tool KW1 (Left) Package includes:1pc x Super Auto Decoder and Pick Tool KW1 (Left) Pictures of Super Auto Decoder and Pick Tool KW1 (Left)Super Auto Decoder and Pick Tool KW…

贡井区建设局网站久久建工集团

Problem: 百亿富翁 文章目录 思路解题方法复杂度Code 思路 这是一个单调栈的问题。单调栈是一种特殊的栈结构,它的特点是栈中的元素保持单调性。在这个问题中,我们需要找到每个元素左边和右边第一个比它大的元素。我们可以使用一个单调递增的栈来解决这个…

做网站的岗位好吗人才招聘网最新招聘

实模式:(即实地址访问模式)它是Intel公司80286及以后的x86(80386,80486和80586等)兼容处理器(CPU)的一种操作模式。实模式被特殊定义为20位地址内存可访问空间上,这就意味着它的容量是2的20次幂&#xff08…

网站的版面布局网站建设与熊掌号未来的关系

一、文章前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧。已支持…

公司网站优化推广电子商务营销推广

数据检索算法是指从数据集合(数组、表、哈希表等)中检索指定的数据项。 数据检索算法是所有算法的基础算法之一。 本文发布 三元搜索(Ternary Search)的源代码。 1 文本格式 using System; namespace Legalsoft.Truffer.Algo…

创意网站交互wordpress 备案信息修改

目录 指针的使用 strlen的模拟实现 传值调用和传址调用 数组名的理解 使用指针访问数组 一维数组传参的本质 冒泡排序 个人主页(找往期文章):我要学编程(ಥ_ಥ)-CSDN博客 指针的使用 strlen的模拟实现 库函数strlen的功能是求字符串…

10.2刷题计划

力扣10题 正则表达式匹配力扣22题 括号生成 z是代表左括号的数量,y代表右括号的数量,k代表每个括号的最大数量 设置一个temp,存储递归中的字符串 返回条件:左括号和右括号数量均到达k,将temp压入答案中 每次递归…

云南省建设厅网站人员查询湛江建站公司

学习一门新的编程语言可能是一个具有挑战性的过程,但通过一些系统的方法,可以大大加快这个过程。 目录 第一步:通过书籍和视频课程掌握基本语法1. **学习编程语言的基础知识**2. **掌握字符串处理**3. **掌握正则表达式和解析器**4. **掌握面…

US$348 Turbo Decoder HU100RV2 for BMW F Series

Turbo Decoder HU100RV2 for BMW F SeriesPackage Including:1pc x Turbo Decoder HU100RV2 for BMW F Series Pictures of Turbo Decoder HU100RV2 for BMW F SeriesTurbo Decoder HU100RV2 for BMW F Series, now on…

树莓派搭建NAS之二:安装OpenMediaVault(OMV)

安装OpenMediaVault(OMV)安装的树莓派必须没有桌面才行,有桌面先提示安装失败。在终端运行下面的命令开始安装: wget -O - https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/instal…

dp 总结 1

dp 总结 1 闲来无事, 把刚学明白的 dp 笔记整理一下. shout out to professor Adzlpxsn. 基本的, 状态, 转移, 方程 状态 一句话概况即为当前的属性. 比如说, 贝贝现在是 \(30\) 岁, 发了 \(0\) 张专辑, 我们就可以说 …

绍兴建设局网站网址查询器

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、使用步骤1.安装supervisor-win2.配置supervisord3.配置program4.启动supervisord.exe5.supervisorctl.exe管控 二、后台启动总结 前言 windows使用supervi…

网站做行测题wordpress首页显示内容设置

WinCC Professional V16 支持客户机/服务器架构,但目前只支持单个服务器或单对冗余服务器/多个客户机的模式,还不能支持像WinCC V7.5 SP1中的多个服务器/多个客户机的分布式架构。 组态步骤如下: 1. 在项目中分别添加服务器站和客户机站&…

盛盾科技网站建设简洁高端网页

很清爽的 abstract 给出链接 前面的背景意义 其实 是通用的 这里替大家 整理一吓吓 1 缺陷分类在钢铁表面缺陷检测中 有 意义。 2 大多数缺陷分类模型都是基于完全监督的学习, 这需要大量带有图像标签的训练数据。 在工业场景中收集有缺陷的图像是非常困难…

US$98 Battery for 2M2 Magic Tank Automatic Car Key Cutting Machine

Battery for 2M2 Magic Tank Automatic Car Key Cutting MachineThis battery is for you to put in 2M2 Cutting Machine and take out for working. It can cut about 20 keys when you charge it completely.Packag…

南宁市建设工程质量安全协会网站如何安装wordpress图解

在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括招聘信息管理系统的网络应用,在外国招聘信息管理系统已经是很普遍的方式,不过国内的线上管理系统可能还处于起步阶段。招聘信息管理系统具有招聘信息管…

US$44 Ford Soft Rubber FO21-8 Quick Opening Tool

Ford Soft Rubber FO21-8 Quick Opening Tool Package includes:1pc x Ford Soft Rubber FO21-8 Quick Opening Tool Pictures of Ford Soft Rubber FO21-8 Quick Opening ToolFord Soft Rubber FO21-8 Quick Opening …

为什么做网站的会弄友情链接官方网站建设 磐石网络多少费用

《大学计算机基础》试题题库及答案一、单选题练习 1.完整的计算机系统由( C )组成。A.运算器、控制器、存储器、输入设备和输出设备B.主机和外部设备C.硬件系统和软件系统D.主机箱、显示器、键盘、鼠标、打印机2&…