【发布时间】:2014-12-01 09:08:12
【问题描述】:
我正在使用 jersey 构建一个 Web 服务应用程序。 使用 apache shiro 进行授权/身份验证。
我找到了一些教程,展示了如何在 Web 应用程序中使用 apache shiro。他们使用具有用户名和密码字段的 .jsp 页面显示登录方法,并且此 .jsp 页面在 shiro.ini 中配置如下:
[main]
shiro.loginUrl = /login.jsp
[urls]
/login.jsp = authc
/logout = logout
我想知道如何在没有任何 .jsp 页面的情况下进行此身份验证,因为我的项目只有 Web 服务。所以我认为我需要一个登录服务,而不是我创建了一个:
@POST
@Path("/login")
public Response login(@FormParam("username") final String username, @FormParam("password") final String password, @FormParam("remember") final boolean remember) {
final Subject currentUser = SecurityUtils.getSubject();
if (!currentUser.isAuthenticated()) {
final UsernamePasswordToken token = new UsernamePasswordToken(username, password);
try {
token.setRememberMe(remember);
currentUser.login(token);
} catch (final AuthenticationException e) {
return Response.status(Status.BAD_REQUEST).entity("Usuário ou senha inválido").build();
}
}
这是我的 shiro.ini 配置文件:
[urls]
/security/login = anon
/security/isAuthenticated = anon
/** = authcBasic
一旦用户无法通过身份验证登录我包括/security/login = anon。
这是在 web 服务环境中使用 apache shiro 对用户进行身份验证的正确方法吗?
【问题讨论】:
标签: authentication jersey shiro