我正在尝试使用 Websockets 和 STOMP 1.2。我想在 CONNECT 框架上使用 JWT 对用户进行身份验证,并在授权无效时返回错误消息。这是通道拦截器
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer
{
// ... Removed for readability
@Override
public void configureClientInboundChannel(ChannelRegistration registration)
{
registration.interceptors(new ChannelInterceptor()
{
@Override
public Message<?> preSend(Message<?> message, MessageChannel channel)
{
StompHeaderAccessor accessor =
MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class);
if (accessor != null && StompCommand.CONNECT.equals(accessor.getCommand()))
{
String token = accessor.getFirstNativeHeader(authorizationHeader);
if (token != null)
{
Authentication authentication = tokenUtil.getAuthentication(resolveToken(token));
accessor.setUser(authentication);
}
else
{
throw new UnauthorizedException();
}
}
return message;
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
这样错误堆栈就会有 …
我有这样的控制器
@RestController
@RequestMapping(value="/test")
@PreAuthorize("hasRole('ADMIN')")
public class TestController
{
@RequestMapping( method=RequestMethod.GET, produces=MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<String> test ()
{
return ResponseEntity.ok("test");
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试编写单元测试来测试访问此控制器方法的权限。
这是我的测试
@RunWith(SpringRunner.class)
@ContextConfiguration
@WebMvcTest(value = TestController.class)
public class AUnitTest
{
@Autowired
private MockMvc mockMvc;
private final String url = "/test";
@Test
@WithMockUser(roles="ADMIN")
public void testAdminUser() throws Exception
{
RequestBuilder requestBuilder = MockMvcRequestBuilders.get(this.url );
MvcResult result = mockMvc.perform(requestBuilder).andReturn();
assertEquals(HttpStatus.OK.value(), result.getResponse().getStatus());
}
}
Run Code Online (Sandbox Code Playgroud)
当我从 @WithMockUser 中删除角色并留空时,默认情况下它将具有角色 USER 然后测试通过。当我放置角色 USER 和 ADMIN 时,它也会因为 USER 角色而通过。但是,每当我将角色设置为 ADMIN 时,它都会失败,即使我将该用户设置为需要具有 ADMIN 角色才能访问控制器。
我尝试设置用户名、密码、Spring Security …
我在改变 Angular 2 材质的前景颜色时遇到困难。例如在工具栏中,文本是黑色的。我尝试用以下样式更改它
@import '~@angular/material/theming';
$primary: mat-palette($mat-cyan, 300);
$accent : mat-palette($mat-yellow, 500);;
$warn : mat-palette($mat-red, 600);
$theme-foreground: (
base: gray,
divider: $white-12-opacity,
dividers: $white-12-opacity,
disabled: rgba(200, 200, 200, 0.38),
disabled-button: rgba(200, 200, 200, 0.38),
disabled-text: rgba(200, 200, 200, 0.38),
hint-text: rgba(200, 200, 200, 0.38),
secondary-text: rgba(200, 200, 200, 0.54),
icon: rgba(200, 200, 200, 0.54),
icons: rgba(200, 200 , 200, 0.54),
text: rgba(200, 200, 200, 0.87),
slider-min: rgba(200, 200, 200, 0.87),
slider-off: rgba(200, 200, 200, 0.26),
slider-off-active: rgba(200, 200, 200, …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建覆盖整个网站页面并模糊其后面的所有内容的叠加层。我寻找解决方案,尝试使用 CSS3 模糊滤镜的多个版本,但没有成功。主要问题是当 body 标签有背景时,它不会模糊。
玩具示例:
body
{
background: url("https://upload.wikimedia.org/wikipedia/commons/8/8a/Too-cute-doggone-it-video-playlist.jpg");
}
h1
{
text-align: center;
}
#overlay
{
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
background: rgba(0, 0, 0, 0.5);
-webkit-filter: blur(10px);
}Run Code Online (Sandbox Code Playgroud)
<html>
<head></head>
<body>
<h1>
Text
</h1>
<div id="overlay">
overlay
</div>
</body>
</html>Run Code Online (Sandbox Code Playgroud)
我想尝试模糊覆盖 div 后面的所有内容。如果我向 h1 添加模糊(或者如果我将其包装在其他 div 内并在该 div 上添加模糊),我可以达到接近的解决方案,但不会模糊背景。
有没有一种解决方案可以满足所有要求?
想法是创建一个 JavaScript 文件,以编程方式执行此操作,以便我可以在多个页面上使用。