【发布时间】:2014-03-24 20:56:33
【问题描述】:
我开始使用 Apache Shiro。我从简单的示例开始,并不断增加复杂性。
目前我正在使用 JSF 从登录表单中收集电子邮件地址和密码,并使用 UsernamePasswordToken 向 Shiro 验证用户。
UsernamePasswordToken token = new UsernamePasswordToken(email, password);
SecurityUtils.getSubject().login(token);
由开箱即用的 JDBC 领域支持,只需简单查询
jdbcRealm.authenticationQuery = SELECT password FROM user WHERE email = ?
要获取有关用户的更多详细信息,例如他们的姓名,我正在通过主体在数据库中查找用户 - 这是他们的电子邮件地址。
currentUser = userDAO.findByEmail((String) SecurityUtils.getSubject().getPrincipal());
这很好用,但允许用户更改他们的电子邮件地址,这会破坏查找。我的目标是将唯一的用户 ID 存储为主体而不是电子邮件地址,因为这永远不会改变。我将如何实现这一目标?
【问题讨论】:
标签: java authentication shiro