注册(注册)后,我通过Spring Security以编程方式登录我的用户:
public register(HttpServletRequest request, String user, String password) {
...
request.login(user, password);
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,但它不会创建记住我的cookie(尽管使用交互式登录可以很好地创建cookie).
现在我已经阅读了这个和这个答案,你必须连接RememberMeServices
(我使用PersistentTokenBasedRememberMeServices
)的实现,然后调用onLoginSuccess
.我没有成功自动装配PersistentTokenBasedRememberMeServices
.
如何使这项工作?这是正确的方法吗?为什么Spring Security不提供更方便的方式?
PS:这是我配置的摘录:
@Configuration
@EnableWebSecurity
public class WebSecConf extends WebSecurityConfigurerAdapter {
...
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.rememberMe()
.tokenRepository(new MyPersistentTokenRepository())
.rememberMeCookieName("rememberme")
.tokenValiditySeconds(60 * 60 * 24)
.alwaysRemember(true)
.useSecureCookie(true)
.and()
....
...
}
}
Run Code Online (Sandbox Code Playgroud) 在 Hibernate 6.0 路线图 ( https://github.com/hibernate/hibernate-orm/wiki/Roadmap6.0 ) 中提到 SQM 即将推出。
什么是 SQM?
在此路线图中,以下简短词对其进行了描述:
SQM 集成:改进了 SQL 生成和执行的性能(较小的 SQL,基于位置的结果提取,而不是基于名称(别名));HQL、JPQL 和 Criteria 查询的统一方法。
这就是我发现的关于 SQM 的全部内容。有人可以更详细地解释一下吗?它到底是什么,它在编码时会是什么样子,它有哪些好处?
当(在 Spring Security / MVC 中)对页面的访问被拒绝时,由于用户没有足够的权限(尽管他已通过身份验证),我需要通过显示登录页面(而不是标准行为)提供以另一个用户身份登录显示 403 访问被拒绝页面)。
我可以编写一个AccessDeniedHandler
, 重定向到登录页面。但是,当 Spring Security 发现已经有另一个用户登录时,它会如何反应?当新用户成功通过身份验证后,我可以以某种方式注销旧用户吗?
在Vaadin Flow中,除了Components之外,现在还有Elements.
在元素的javadoc中说:
Component是元素或元素层次结构的更高级抽象.
这实际意味着什么?在更高级别以及使用Elements和何时使用组件时所做的是什么?
填写 Jasper 报告时,出现以下异常:
java.lang.ClassNotFoundException: org.apache.commons.javaflow.core.StackRecorder
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1285)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119)
at net.sf.jasperreports.engine.fill.BaseReportFiller.fill(BaseReportFiller.java)
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:162)
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:145)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:689)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:670)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:992)
Run Code Online (Sandbox Code Playgroud)
我已经添加了commons-javaflow
(https://search.maven.org/#search%7Cga%7C1%7Ca%3A%22commons-javaflow%22) - 但这没有帮助。哪里可以找到这个类?
编辑:对重复问题标签的一条评论:这不是关于 ClassNotFoundException 的一般问题 - 这是关于 Jasper-Reports / Apache Commons JavaFlow 的特殊问题。所以请拿走这个标签。