This question already has answers here:
How to organize RMI Client-Server architecture
                                
                                    (2个答案)
                                
                        
                                6年前关闭。
            
                    
我正在寻找有关如何使用Java RMI将Apache Shiro实施为分布式系统(客户端-服务器)一部分的指南/技巧。

我已经看过这个线程的答案:How to organize RMI Client-Server architecture,我正在考虑使用类似的东西。我计划的是一个远程对象(可能是Singleton?),该对象在客户端登录时处理身份验证。如果登录成功,则会创建一个新的会话对象。但是我不太确定这个对象将属于哪里以及在其中存储什么信息。它应该传递给客户端还是作为另一个远程对象存在。

我认为它应该用作某种会话外观,其中来自客户端的每个请求均由Shiro授权。
我不确定是否最好(也可能)为客户端提供Shiro知道并可以基于每个方法调用进行授权的唯一令牌/标识符,或者为每个方法创建一个远程会话外观对象连接并存储有关当前用户的信息等等。

另外,我也不十分清楚Shiro在多线程应用程序中使用时如何处理Subject,以及所提到的任何建议是否会引起冲突。

我很期待听到您对此的看法-谢谢!

最佳答案

如我对该问题的回答所述,登录对象确实是一个单例,而会话对象确实是另一个远程对象。

我认为您提到的对Shiro进行身份验证的两种选择之间没有任何区别。从Shiro的角度来看,会话对象是客户端。

08-25 00:48