public class WebSecurityConfig extends WebSecurityConfigurerAdapter
...
auth.inMemoryAuthentication().withUser(email).password(password).roles(roles.toArray(new String[roles.size()])).and().passwordEncoder(encoder());
这在某个时间点上很有效,但我有一个用例,在应用程序运行时可以添加用户。
我可以通过哪种方法(通过控制器/服务)进行启动后操作?我想它可能是InmemoryUserDetailsManager
(它包含createUser()
方法),但我不确定如何引用或配置它。
下面的代码将执行您所要求的操作:
@Configuration
@EnableWebMvcSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
//whatever here
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(inMemoryUserDetailsManager());
}
@Bean
public InMemoryUserDetailsManager inMemoryUserDetailsManager() {
final Properties users = new Properties();
users.put("user","pass,ROLE_USER,enabled"); //add whatever other user you need
return new InMemoryUserDetailsManager(users);
}
}
使用您在上面配置的InmemoryUserDetailsManager
,一个只添加并检查用户是否存在的超级简单控制器如下所示:
@RestController
@RequestMapping("user")
public class SimpleSecurityController {
private final InMemoryUserDetailsManager inMemoryUserDetailsManager;
@Autowired
public SimpleSecurityController(InMemoryUserDetailsManager inMemoryUserDetailsManager) {
this.inMemoryUserDetailsManager = inMemoryUserDetailsManager;
}
@RequestMapping("exists/{username}")
public boolean userExists(@PathVariable("username") String username ) {
return inMemoryUserDetailsManager.userExists(username);
}
@RequestMapping("add/{username}/{password}")
public String add(@PathVariable("username") String username, @PathVariable("password") String password) {
inMemoryUserDetailsManager.createUser(new User(username, password, new ArrayList<GrantedAuthority>()));
return "added";
}
}
还要注意,如果使用Spring Boot的自动配置,则需要添加
@EnableAutoConfiguration(exclude = SecurityAutoConfiguration.class)
这是我尝试过的代码,但我得到以下异常: iText。内核PDFEException:“无法在已刷新的页面上绘制元素。” 我需要在最后添加页码,因为在生成pdf的内容后,我生成了一个目录并将其移动到文档的开头。因此,我只知道生成所有页面后的页码。
我正在创建一个这样的表, 但我想增加一列。在原始SQL中看起来是这样的: 如何将其添加到迁移中?我还需要在上面创建一个索引。
我正在使用JOOQ 3.6.4和Java 8从模式生成一组JOOQ记录。 有些表是结构类似的引用数据,比如说它们有ID、CODE和VALUE列(它们可能有其他列,但它们都至少有这些列)。 在我的代码中,不是由JOOQ生成的,我有一个接口“ReferenceData”,它定义了与JOOQ为这三列生成的代码相匹配的访问器。我想告诉JOOQ在它生成的记录对象中添加一个“implements Refere
我创建了一个单独的服务生成器类,如下所示:https://futurestud.io/tutorials/retorfit-2-manage-request-headers-in-okhttp-interceptor apiserviceGenerator.java
我一直在使用 annox 在我的 jaxb 生成的类上添加注释(通过绑定文件),但我找不到直接在包上添加注释的方法(包信息.java)。 我一直在尝试在bindings.xml中这样做: 但是jaxb抱怨说< code>annox:annotate不应该在那里。 还有别的方法吗?
我已经为我的颤振应用程序创建了android版本。 然后我创建了一个内部测试版本。这是一个警告 此应用程序包包含本机代码,您尚未上载调试符号。我们建议您上载一个符号文件,以使崩溃和ANR更易于分析和调试。 基本上我要做的就是添加以下内容来构建。根据链接显示的渐变文件。 我假设它是android/app/build。他们说的是格拉德尔。 不确定我必须在文件中的什么位置添加这一行。 有人能指出在哪里加