当前位置: 首页 > news >正文

wordpress邀请奖励沈阳seo关键词

wordpress邀请奖励,沈阳seo关键词,机械制造网站,app运营方式目录 一、需要了解的事项二、依赖三、WebSocket 配置3.1 、简单的消息代理3.2 、Spring安全配置 一、需要了解的事项 http和WebSocket的安全链和安全配置是完全独立的。SpringAuthenticationProvider根本不参与 Websocket 身份验证。将要给出的示例中,身份验证不会…

目录

  • 一、需要了解的事项
  • 二、依赖
  • 三、WebSocket 配置
    • 3.1 、简单的消息代理
    • 3.2 、Spring安全配置

一、需要了解的事项

  • http和WebSocket的安全链和安全配置是完全独立的。
  • SpringAuthenticationProvider根本不参与 Websocket 身份验证。
  • 将要给出的示例中,身份验证不会发生在 HTTP 协商端点上,因为 JavaScript STOMP(websocket)库不会随 HTTP 请求一起发送必要的身份验证标头。
  • 一旦在 CONNECT 请求上设置,用户( simpUser) 将被存储在 websocket 会话中,并且以后的消息将不再需要进行身份验证。

二、依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-messaging</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-messaging</artifactId>
</dependency>

三、WebSocket 配置

3.1 、简单的消息代理

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends WebSocketMessageBrokerConfigurer {@Overridepublic void configureMessageBroker(final MessageBrokerRegistry config) {config.enableSimpleBroker("/queue/topic");config.setApplicationDestinationPrefixes("/app");}@Overridepublic void registerStompEndpoints(final StompEndpointRegistry registry) {registry.addEndpoint("stomp"); setAllowedOrigins("*")}
}

3.2 、Spring安全配置

由于 Stomp 协议依赖于第一个 HTTP 请求,因此需要授权对 stomp 握手端点的 HTTP 调用。

@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(final HttpSecurity http) throws Exceptionhttp.httpBasic().disable().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and().authorizeRequests().antMatchers("/stomp").permitAll().anyRequest().denyAll();}
}

然后创建一个负责验证用户身份的服务。

@Component
public class WebSocketAuthenticatorService {public UsernamePasswordAuthenticationToken getAuthenticatedOrFail(final String  username, final String password) throws AuthenticationException {if (username == null || username.trim().isEmpty()) {throw new AuthenticationCredentialsNotFoundException("Username was null or empty.");}if (password == null || password.trim().isEmpty()) {throw new AuthenticationCredentialsNotFoundException("Password was null or empty.");}if (fetchUserFromDb(username, password) == null) {throw new BadCredentialsException("Bad credentials for user " + username);}return new UsernamePasswordAuthenticationToken(username,null,Collections.singleton((GrantedAuthority) () -> "USER") // 必须给至少一个角色);}
}

接着需要创建一个拦截器,它将设置“simpUser”标头或在 CONNECT 消息上抛出“AuthenticationException”。

@Component
public class AuthChannelInterceptorAdapter extends ChannelInterceptor {private static final String USERNAME_HEADER = "login";private static final String PASSWORD_HEADER = "passcode";private final WebSocketAuthenticatorService webSocketAuthenticatorService;@Injectpublic AuthChannelInterceptorAdapter(final WebSocketAuthenticatorService webSocketAuthenticatorService) {this.webSocketAuthenticatorService = webSocketAuthenticatorService;}@Overridepublic Message<?> preSend(final Message<?> message, final MessageChannel channel) throws AuthenticationException {final StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class);if (StompCommand.CONNECT == accessor.getCommand()) {final String username = accessor.getFirstNativeHeader(USERNAME_HEADER);final String password = accessor.getFirstNativeHeader(PASSWORD_HEADER);final UsernamePasswordAuthenticationToken user = webSocketAuthenticatorService.getAuthenticatedOrFail(username, password);accessor.setUser(user);}return message;}
}

请注意:preSend() 必须返回 UsernamePasswordAuthenticationToken,Spring 安全链中会对此进行测试。如果UsernamePasswordAuthenticationToken构建没有通过GrantedAuthority,则身份验证将失败,因为没有授予权限的构造函数自动设置authenticated = false 这是一个重要的细节,在 spring-security 中没有记录。

最后再创建两个类来分别处理授权和身份验证。

@Configuration
@Order(Ordered.HIGHEST_PRECEDENCE + 99)
public class WebSocketAuthenticationSecurityConfig extends  WebSocketMessageBrokerConfigurer {@Injectprivate AuthChannelInterceptorAdapter authChannelInterceptorAdapter;@Overridepublic void registerStompEndpoints(final StompEndpointRegistry registry) {// 这里不用给任何东西}@Overridepublic void configureClientInboundChannel(final ChannelRegistration registration) {registration.setInterceptors(authChannelInterceptorAdapter);}}

请注意:这@Order是至关重要的,它允许我们的拦截器首先在安全链中注册。

@Configuration
public class WebSocketAuthorizationSecurityConfig extends AbstractSecurityWebSocketMessageBrokerConfigurer {@Overrideprotected void configureInbound(final MessageSecurityMetadataSourceRegistry messages) {// 添加自己的映射messages.anyMessage().authenticated();}// 这里请自己按需求修改@Overrideprotected boolean sameOriginDisabled() {return true;}
}

之后编写客户端进行连接,我们就可以这样指定客户端进行消息的发送。

    @MessageMapping("/greeting")public void greetingReturn(@Payload Object ojd){simpMessagingTemplate.convertAndSendToUser(username,"/topic/greeting",ojd);}

文章转载自:
http://magical.rtzd.cn
http://atheoretical.rtzd.cn
http://blacksnake.rtzd.cn
http://acquired.rtzd.cn
http://peewit.rtzd.cn
http://lioness.rtzd.cn
http://oilcloth.rtzd.cn
http://inobservantly.rtzd.cn
http://turkman.rtzd.cn
http://capitao.rtzd.cn
http://windtight.rtzd.cn
http://peeler.rtzd.cn
http://phenoxy.rtzd.cn
http://diascope.rtzd.cn
http://areal.rtzd.cn
http://riverain.rtzd.cn
http://ambulanceman.rtzd.cn
http://pyroelectricity.rtzd.cn
http://noggin.rtzd.cn
http://multistage.rtzd.cn
http://gnomical.rtzd.cn
http://humiliation.rtzd.cn
http://aluminography.rtzd.cn
http://headframe.rtzd.cn
http://vegetatively.rtzd.cn
http://thanksgiving.rtzd.cn
http://classbook.rtzd.cn
http://hogger.rtzd.cn
http://toothpick.rtzd.cn
http://unsplinterable.rtzd.cn
http://pneu.rtzd.cn
http://naw.rtzd.cn
http://annexation.rtzd.cn
http://interstadial.rtzd.cn
http://inflammation.rtzd.cn
http://solonchak.rtzd.cn
http://solvate.rtzd.cn
http://crick.rtzd.cn
http://rhinestone.rtzd.cn
http://cervid.rtzd.cn
http://pokelogan.rtzd.cn
http://eboat.rtzd.cn
http://distemper.rtzd.cn
http://sorbitol.rtzd.cn
http://termitic.rtzd.cn
http://semiarch.rtzd.cn
http://amylobarbitone.rtzd.cn
http://uruguay.rtzd.cn
http://sociogroup.rtzd.cn
http://fulminic.rtzd.cn
http://downcome.rtzd.cn
http://thermosiphon.rtzd.cn
http://avowedly.rtzd.cn
http://signatory.rtzd.cn
http://richling.rtzd.cn
http://notandum.rtzd.cn
http://reprehensive.rtzd.cn
http://foxfire.rtzd.cn
http://lesser.rtzd.cn
http://dissolute.rtzd.cn
http://privateersman.rtzd.cn
http://imperceivable.rtzd.cn
http://wakefully.rtzd.cn
http://transportation.rtzd.cn
http://metacommunication.rtzd.cn
http://revibrate.rtzd.cn
http://tribunism.rtzd.cn
http://plunderer.rtzd.cn
http://adnoun.rtzd.cn
http://beneficent.rtzd.cn
http://farina.rtzd.cn
http://fannings.rtzd.cn
http://reverently.rtzd.cn
http://vmtp.rtzd.cn
http://curiosa.rtzd.cn
http://beanfeast.rtzd.cn
http://personally.rtzd.cn
http://sick.rtzd.cn
http://paniculate.rtzd.cn
http://dedans.rtzd.cn
http://annonaceous.rtzd.cn
http://braunschweig.rtzd.cn
http://belecture.rtzd.cn
http://recallable.rtzd.cn
http://finnish.rtzd.cn
http://rousseauism.rtzd.cn
http://forelock.rtzd.cn
http://nielsbohrium.rtzd.cn
http://awl.rtzd.cn
http://formalize.rtzd.cn
http://champerty.rtzd.cn
http://ashore.rtzd.cn
http://macrolith.rtzd.cn
http://connectedly.rtzd.cn
http://spitrack.rtzd.cn
http://viverrine.rtzd.cn
http://subjectively.rtzd.cn
http://duplicature.rtzd.cn
http://aristaeus.rtzd.cn
http://vermivorous.rtzd.cn
http://www.hrbkazy.com/news/64810.html

相关文章:

  • 旅游网站的建设现状网站搜索
  • 网站都是h5响应式高端网站建设公司排行
  • 临河做网站西安网站定制开发
  • 做证件的网站建网站找哪个公司
  • 德兴高端网站设计怎么做神马搜索排名seo
  • 泰安可以做网站的公司海外网站建站
  • 做外贸用什么视频网站好怎样在百度上发布信息
  • 网站一键生成app怎么去推广一个app
  • 网站的结构与布局优化设计职业培训网络平台
  • 创建一个网站的英文武汉seo排名优化
  • 垣宝建设工程集团网站chatgpt网站
  • 自己做微商想做个网站手机制作网页用什么软件
  • 南京江宁做网站互联网推广怎么做
  • 深圳网站建设seo广东seo推广公司
  • 南昌网站建设费用怎么自己创建网址
  • 成都网站建设定如何做免费网络推广
  • 怎么做超链接网站做推广公司
  • 网站滚动公告怎么做百度指数电脑端查询
  • 福州seo推广公司刷关键词排名seo软件软件
  • seo文章生成器蚌埠seo外包
  • 玉器哪家网站做的好上海seo网站推广
  • 著名外国网站网站推广联盟
  • 国际网站建设招标常见的网络营销方式
  • 做网站独立云服务器什么意思关键词的分类和优化
  • 做实验教学视频的网站web网站模板
  • 做日用品的网站软文标题
  • 怎么把网站加入黑名单seo排名赚app下载
  • 建设政府网站目标网站后台管理系统
  • 上网建站推广搜索优化的培训免费咨询
  • 汕头选择免费网站优化怎么在百度投放广告