小编Jer*_*nce的帖子

如何在spring security 3中为匿名用户从数据库加载角色?

我正在使用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被调用,我可以从数据库为用户加载角色,我想为匿名用户做同样的事情.

我该怎么做 ?谢谢

security anonymous spring-security anonymous-users

5
推荐指数
1
解决办法
3999
查看次数

如何知道spring生成的bean中的bug行?

我有一个使用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的界限.

你知道如何解决这个问题吗?

谢谢

debugging proxy spring cglib

5
推荐指数
1
解决办法
1310
查看次数

选择和何时选择:Web内容,动态列表记录还是特定模型?

我发现Liferay的概念非常令人困惑.

当我添加新项目时,我不知道最好选择什么:

  • 使用带有模板和结构的Web内容概念
  • 使用动态列表记录
  • 使用特定模型(使用服务构建器).

所有这些都是相似的,可以实现相同的目标.

当您在Liferay中开发一些新功能时,您是否有任何关于选择概念的线索或建议?

liferay

5
推荐指数
1
解决办法
1749
查看次数

Java泛型类和通配符

我在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)

java generics wildcard generic-programming

4
推荐指数
1
解决办法
7875
查看次数

如何在 Hibernate 中使用 Mysql 变量?

我需要在 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”...)

我怎样才能做到这一点 ?

谢谢

mysql variables hibernate conflict

3
推荐指数
1
解决办法
8446
查看次数

使用GWT,有没有办法不加载在uibinder xml文件中声明的小部件?

我与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 uibinder gwt2

3
推荐指数
1
解决办法
2261
查看次数

如何解决GWT中的内存泄漏问题?

由于GWT是用javascript编译的,而代码是用JAVA编写的,因此解决GWT内存泄漏的最佳方法是什么?

javascript java gwt memory-leaks

3
推荐指数
1
解决办法
4317
查看次数

Spring安全,ssl ldap并没有证书

我使用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.我怎样才能做到这一点 ?

ssl ldap certificate spring-security ssl-certificate

2
推荐指数
1
解决办法
8394
查看次数

静态元模型,jpa和字段名称作为字符串

我使用Hibernate Static Metamodel Generator Annotation Processor生成我的实体的元模型.因此,我可以通过使用这样的字段(编译检查安全)来正确地构建标准,而不是直接将字段名称指定为字符串:

MyClass_.myField
Run Code Online (Sandbox Code Playgroud)

我将旧代码迁移到这个新系统,但有些函数将字符串作为参数而不是SingularAttribute(元模型类型).

我现在不想改变这些功能的签名.

我的问题:我可以使用元模型访问字段名称并将其转换为字符串吗?

我想做类似的事情,MyClass_.myField.toString()但它不会返回该字段的名称.

java hibernate jpa metamodel

2
推荐指数
1
解决办法
1274
查看次数

休眠和通用字段映射

我想用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)

generics hibernate hibernate-mapping

1
推荐指数
1
解决办法
4205
查看次数