提示信息

AuthenticatingRealm 介绍及用法

勾勒 已关注

AuthenticatingRealm 是 Apache Shiro 框架中的一个抽象类,用于实现用户身份认证功能。它是 org.apache.shiro.realm.Realm 接口的一个实现,在 Shiro 的安全框架中起着核心作用。

在 Shiro 中,Realm 被视为安全数据源,也就是说获取应用程序的安全数据(如用户、角色、权限等)都是从 Realm 获取的。

AuthenticatingRealm 只关注和处理身份认证,但是在实际使用中,通常会使用其子类 AuthorizingRealm,后者同时处理了身份认证和授权。

下面是一个简单的使用示例:

  1. public class MyAuthenticatingRealm extends AuthenticatingRealm {
  2. @Override
  3. protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
  4. UsernamePasswordToken upt = (UsernamePasswordToken) token;
  5. String username = upt.getUsername();
  6. // 根据实际情况进行身份认证,并获取用户数据
  7. // 这里仅为示例,假设从数据库获取到的密码为 "password"
  8. String passwordFromDatabase = "password";
  9. if (passwordFromDatabase == null) {
  10. throw new UnknownAccountException("No account found for user [" + username + "]");
  11. }
  12. return new SimpleAuthenticationInfo(username, passwordFromDatabase, getName());
  13. }
  14. }

在这个示例中,我们创建了一个继承自 AuthenticatingRealmMyAuthenticatingRealm 类,并重写了 doGetAuthenticationInfo() 方法。这个方法接收一个 AuthenticationToken 参数,通常是 UsernamePasswordToken 类型,然后根据 token 中的信息(如 用户名和密码)去数据库或其他地方进行真实的身份认证。如果认证成功,则返回一个包含用户信息的 AuthenticationInfo 对象;如果认证失败,则抛出相应的 AuthenticationException

注意,在实际应用中,你需要根据自己的用户数据源来获取用户数据,并执行合适的

    遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
勾勒 关注 已关注

最近一次登录:2024-01-18 08:57:24   

暂时还没有签名,请关注我或评论我的文章
×
免费图表工具,画流程图、架构图