关于RESTful和Shiro集成的示例

时间:2013-08-05 12:48:49

标签: java rest shiro

我正在使用RESTful作为Web服务开发Java Web应用程序。现在我想应用Apache Shiro来保护我的应用程序。其机制是:用户登录成功后,会将一个令牌(由用户名,密码和记录时间组合)返回给客户端。然后,每个REST请求都会附加此令牌以在服务器上进行身份验证(无需授权)。但现在我不知道如何配置接受这个 顺便问一下,请你给我一些关于Shiro& amp;的样品。 RESTful集成?谢谢

2 个答案:

答案 0 :(得分:3)

如果REST应用程序和Java Web应用程序是相同的Web应用程序,那么您只需要检查subject.isAuthenticated()。使用没有密码或用户名的会话cookie(传递密码并不是一个好主意,因为它可能被盗)。

如果两个部分都在同一个Web应用程序中,则默认情况下会出现大多数此行为。

在你的REST方法中,你会有类似的东西:

Subject subject = SecurityUtils.getSubject();
if(subject == null || !subject.isAuthenticated()) {
     return 401; // Not Authorized
}

希望有所帮助。

答案 1 :(得分:0)

除了上述响应之外,您还可以在成功登录后从REST服务器发送回令牌(会话ID)。然后,您的iOS / Android应用程序将需要存储它,并在其发出的每个REST请求中发送它。以下是您的帖子登录REST响应的示例:

session-start-timestamp: 1394683755389,
session-timeout: 1800000,
session-id: "068C8E0E289788A7ABC5FE47B2CC0D28"

会话ID将由您的REST服务器维护,每当有此ID的新请求进入时,其TTL将被重置。

在浏览器上,此ID会自动发送。对于您的情况,您可能希望使用每个HTTP请求(这是REST请求)显式发送它

希望这有帮助