我正在使用Spring Security 3.0.2,我找不到从数据库加载匿名用户角色的方法(我有动态角色,可以将角色分配给每个人).
我尝试使用自定义anonymousAuthenticationProvider,但从不调用此提供程序.这是我的配置:
<http auto-config="false">
<logout invalidate-session="true" logout-success-url="/page/welcome" />
<remember-me />
<anonymous username="_GUEST_" granted-authority="ROLE_GUEST" key="anonymousKey" />
<form-login login-page="/page/login" authentication-failure-url="/page/login?fail=1" default-target-url="/page/welcome" />
</http>
<authentication-manager alias="authenticationManager">
<authentication-provider ref="anonymousAuthenticationProvider"></authentication-provider>
<authentication-provider user-service-ref="accountDetails">
<password-encoder ref="passwordEncoder">
<salt-source user-property="xxxx" />
</password-encoder>
</authentication-provider>
</authentication-manager>
<beans:bean id="accountDetails" class="com.mysite.AccountDetailsImpl" />
<beans:bean id="passwordEncoder" class="org.springframework.security.authentication.encoding.ShaPasswordEncoder">
<beans:constructor-arg value="512" />
</beans:bean>
<beans:bean id="anonymousAuthenticationProvider" class="com.my.site.security.CustomAnonymousAuthenticationProvider">
<beans:property name="key" value="anonymousKey" />
</beans:bean>
Run Code Online (Sandbox Code Playgroud)
永远不会调用我的anonymousAuthenticationProvider,因此我无法从数据库加载自定义权限.当我登录时,我的服务accountDetails被调用,我可以从数据库为用户加载角色,我想为匿名用户做同样的事情.
我该怎么做 ?谢谢
我有一个使用Spring和jpa(通过hibernate)构建的网站.我有一个错误,我不知道如何识别出现错误的行.
我无法在我的ide上调试它,因为它是一个实时版本(所有在本地运行正常).
我有记录说:o
rg.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)#012#011
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:625)#012#011
at com.mycompany.server.rpc.UserService$$EnhancerByCGLIB$$64ed2d4f.createAccount(<generated>)#012#011
at com.mycompany.server.rpc.ServiceRPCImpl.createAccount(ServiceRPCImpl.java:309)
Run Code Online (Sandbox Code Playgroud)
我的问题是第三行.由于UserService对象由Spring处理,它变成了代理,我无法知道bug的界限.
你知道如何解决这个问题吗?
谢谢
我发现Liferay的概念非常令人困惑.
当我添加新项目时,我不知道最好选择什么:
所有这些都是相似的,可以实现相同的目标.
当您在Liferay中开发一些新功能时,您是否有任何关于选择概念的线索或建议?
我在java中遇到泛型类的问题.
我有这门课:
public abstract class MyMotherClass<C extends AbstractItem>
{
private C item;
public void setItem(C item)
{
this.item = item;
}
public C getItem()
{
return item;
}
}
Run Code Online (Sandbox Code Playgroud)
这个类的实现可以是:
public class MyChildClass extends MyMotherClass<ConcreteItem>
{
}
Run Code Online (Sandbox Code Playgroud)
ConcreteItem只是一个扩展AbstractItem(它是抽象的)的简单类.
所以MyChildClass有一个ConcreteItem,我可以使用:
MyChildClass child = new MyChildClass();
child.setItem(new ConcreteItem());
// automatic cast due to generic class
ConcreteItem item = child.getItem();
Run Code Online (Sandbox Code Playgroud)
好的,目前一切都很好.这是问题所在:
现在我想从集合中提取MyMotherClass的一个实例并设置它的项目(哪个类型未知):
Map<String, MyMotherClass> myCollection = new HashMap<String, MyMotherClass>();
Map<String, AbstractItem> myItems = new HashMap<String, AbstractItem>();
// fill the 2 collections
...
MyMotherClass …Run Code Online (Sandbox Code Playgroud) 我需要在 Hibernate 中使用本机 sql 查询并使用变量。
但是hibernate抛出一个错误说:参数前缀后不允许有空格
所以:= mysql变量赋值和hibernate变量赋值有冲突。
这是我的sql查询:
SET @rank:=0;
UPDATE Rank SET rank_Level=@rank:=@rank+1 ORDER BY Level;
Run Code Online (Sandbox Code Playgroud)
hibernate代码(jpa语法):
Query query = em.createNativeQuery(theQuery);
query.executeUpdate();
Run Code Online (Sandbox Code Playgroud)
我无法使用存储过程,因为我的 sql 查询是动态生成的(“Level”可以是“int”或“force”...)
我怎样才能做到这一点 ?
谢谢
我与GWT的一个常见设计是创建一个包含两个孩子的小部件:A和B.
我在与我的主要小部件相关联的uibinder文件中声明了这两个小部件A和B.
我想要做的是根据if语句加载或不加载小部件A.
理想的方法是为widget A设置provided = true,并在我不想加载这个widget时将widget A设置为null.但是GWT会引发错误.
有没有办法在uibinder中声明小部件然后不加载它们?
谢谢
编辑:经过大量讨论后,理想的方法是在optional = true时声明字段"provided = true"和"optional = true",如果字段为null,则createAndBindUI不能抛出异常.这是一种干净的方法.
如果您认为此功能必须存在于GWT中,请为此问题加注星标:http: //code.google.com/p/google-web-toolkit/issues/detail?id = 5699
编辑2:使用托马斯描述的LazyPanel似乎是一种更好的方法来处理这个问题.
由于GWT是用javascript编译的,而代码是用JAVA编写的,因此解决GWT内存泄漏的最佳方法是什么?
我使用spring security来管理登录.我已将spring security配置为连接到使用ssl(ldaps)安全的ldap服务器.
此服务器是测试服务器,没有有效的证书.当我尝试测试登录时,spring security会抱怨证书无法验证(当然!):
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find
valid certification path to requested target
Run Code Online (Sandbox Code Playgroud)
我的问题很简单:我不想管理任何类型的证书,我想停用证书检查并继续使用ssl ldap.我怎样才能做到这一点 ?
我使用Hibernate Static Metamodel Generator Annotation Processor生成我的实体的元模型.因此,我可以通过使用这样的字段(编译检查安全)来正确地构建标准,而不是直接将字段名称指定为字符串:
MyClass_.myField
Run Code Online (Sandbox Code Playgroud)
我将旧代码迁移到这个新系统,但有些函数将字符串作为参数而不是SingularAttribute(元模型类型).
我现在不想改变这些功能的签名.
我的问题:我可以使用元模型访问字段名称并将其转换为字符串吗?
我想做类似的事情,MyClass_.myField.toString()但它不会返回该字段的名称.
我想用Hibernate映射超类中的泛型字段.
我的母班是:
@Entity
@Table(name = "ParameterValue")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "parameterType", discriminatorType = DiscriminatorType.STRING)
public abstract class ParameterValue<C>
{
private C value;
/* HELP NEEDED HERE */
public C getValue()
{
return value;
}
public void setValue(C value)
{
this.value = value;
}
}
Run Code Online (Sandbox Code Playgroud)
一个子类:
@Entity
@DiscriminatorValue(value = "integer")
@AttributeOverride(name = "value", column = @Column(name = "intValue"))
public class IntegerParameterValue extends ParameterValue<Integer>
{
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我重写值字段以指定在数据库中使用的列.我的表ParameterValue由几列组成,每种类型一列.
CREATE TABLE `ParameterValue` (
`intValue` int(11) DEFAULT NULL,
`doubleValue` double DEFAULT NULL,
`stringValue` text …Run Code Online (Sandbox Code Playgroud)