我正在创建一个angular.js Web应用程序,并寻找如何集成keycloak
到项目中.我已阅读并观看了许多教程,我发现其中大多数都有用户通过默认登录页面登录/注册keycloak
,然后重定向到应用程序.
我已经设计了自己的登录和注册页面,我想使用它.我如何使用它们而不是keycloak
默认值.有没有我可以调用的API,或者我的后端可能会这样做?我还看到有可用于keycloak的弹簧适配器,我可以使用它们吗?任何示例的任何链接都是好的.
我的第二个问题是在注册时我可以添加更多用户详细信息,例如地址,dob,性别keycloak
吗?因为我的注册页面需要这些信息.
我正在使用keycloak来确保我的休息服务.我正在参考这里给出的教程.我创造了休息和前端.现在当我在后端添加keycloak时,当我的前端进行api调用时,我收到CORS错误.
Spring启动时的Application.java文件看起来像
@SpringBootApplication
public class Application
{
public static void main( String[] args )
{
SpringApplication.run(Application.class, args);
}
@Bean
public WebMvcConfigurer corsConfiguration() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/*")
.allowedMethods(HttpMethod.GET.toString(), HttpMethod.POST.toString(),
HttpMethod.PUT.toString(), HttpMethod.DELETE.toString(), HttpMethod.OPTIONS.toString())
.allowedOrigins("*");
}
};
}
}
Run Code Online (Sandbox Code Playgroud)
application.properties文件中的keycloak属性如下所示
keycloak.realm = demo
keycloak.auth-server-url = http://localhost:8080/auth
keycloak.ssl-required = external
keycloak.resource = tutorial-backend
keycloak.bearer-only = true
keycloak.credentials.secret = 123123-1231231-123123-1231
keycloak.cors = true
keycloak.securityConstraints[0].securityCollections[0].name = spring secured api
keycloak.securityConstraints[0].securityCollections[0].authRoles[0] = admin
keycloak.securityConstraints[0].securityCollections[0].authRoles[1] = user
keycloak.securityConstraints[0].securityCollections[0].patterns[0] …
Run Code Online (Sandbox Code Playgroud) 我试图了解运行时如何创建未来对象executorService.submit(Callable);
例如,假设我创建了一个线程池,在其中传递可调用的实现
class FactorialCalculator implements Callable<Long> {
private int number;
public FactorialCalculator(int number) {
this.number = number;
}
@Override
public Long call() throws Exception {
return (number*number);
}
}
Run Code Online (Sandbox Code Playgroud)
我想返回 future 对象,这样我就可以从调用函数中获取返回值。我的自定义线程池如下所示
class MyThreadPool implements java.util.concurrent.Executor
{
private final java.util.concurrent.BlockingQueue<Callable> queue;
public MyThreadPool(int numThreads) {
queue = new java.util.concurrent.LinkedBlockingQueue<>();
for (int i=0 ; i<numThreads ; i++) {
new Thread(new Runnable(){
@Override
public void run() {
while(true) {
queue.take().call();
}
}
}).start();
}
}
@Override
public void submit(Callable command) …
Run Code Online (Sandbox Code Playgroud) java multithreading executorservice java.util.concurrent threadpool
我是 spring rest 的新手,并尝试创建一个 REST POST API,用户可以在其中将文件发送到服务器。
@RequestMapping(value = "/order", method = RequestMethod.POST)
public String create(@RequestParam("file") MultipartFile file) {
System.out.println("---------INSIDE ORDER----------");
return "file succesfully received!";
}
Run Code Online (Sandbox Code Playgroud)
但是当我通过上传 order.txt 文件并选择表单数据(在邮递员中)调用此 API 时,我收到此错误
{
"timestamp": 1474129488458,
"status": 400,
"error": "Bad Request",
"exception": "org.springframework.web.multipart.support.MissingServletRequestPartException",
"message": "Required request part 'file' is not present",
"path": "/order"
}
Run Code Online (Sandbox Code Playgroud)