我正在尝试在Tomcat中创建一个自定义领域。我的问题是有一个SessionAttributeListener作为框架的一部分,它检查添加到会话中的任何对象是否是可序列化的,如果不是,则会导致问题.比如让会议无效。
因为org.apache.catalina.realm.GenericPrincipal是不可序列化的,所以我尝试编写自己的类来实现主体和可序列化。这似乎很好,除非试着使用
request.isUserInRole("user")为此,我获得了false,以及用户应该具有的任何其他角色。如果我在阀门类中将GenericPrincipal替换为CustomPrincipal,它将返回true。所以我的问题是:
是什么导致了错误返回?
编辑:简单地说,我实际上已经实现了这个,CustomPrincipal中的代码与GenericPrincipal完全相同,但它也实现了可序列化。Request.isUserInRole(“用户”)在我的阀门中返回false:
request.setUserPrincipal(new CustomPrincipal(args...));但当我做的时候
request.setUserPrincipal(new GenericPrincipal(args...));当我使用request.getUserPrincipal()类时,对该类的任何调用都将返回CustomPrincipal。
发布于 2009-05-07 20:55:39
你需要给我们更多的背景。但是请注意,无论如何,KerberosPrincipal都是抽象的;例如,实现了主体和可序列化,所以有一些方法可以做到。
isUserInRole所做的是将一个请求封装到实现类,以查看用户--由主城市标识的用户--是否真的在这个角色中。因此,我认为第一件事可能是调用getUserPrincipal并查看servlet认为当前主体是什么。
https://stackoverflow.com/questions/836889
复制相似问题