zoukankan      html  css  js  c++  java
  • shiro之 自定义Realm来实现身份认证

    1. jdbcRealm已经实现了从数据库中获取用户来验证信息,但是jdbcRealm灵活性太差。如果要实现自己的一些特殊应用时将不能支持。这个时候我们可以通过自定义Realm来实现身份的认证功能。

    2. Realm是一个接口,在接口中定义了根据token获得认证信息的方法,shiro内容实现了一系列的realm。这些不同的Realm实现类提供了不同的功能。AutenticationRealm实现了获取身份信息的功能,AuthorizingRealm实现了获取权限信息的功能,通常自定义Realm需要继承AuthorizingRealm,既这样可以提供了身份认证的自定义方法,也可以实现授权的自定义方法。

    3. 实现自定义Realm

    /**
     * 自定义realm的实现  该realm类提供了两个方法 
     * doGetAuthenticationInfo 获取认证信息
     * doGetAuthorizationInfo 获取权限信息
    */
    public class UserRealm extends AuthorizingRealm{
        @Override
        public String getName() {
            return "userRealm";
        }
        
        //完成身份认证(从数据库中取数据)并且返回认证信息
        //如果身份认证失败 返回null
        @Override
        protected AuthenticationInfo doGetAuthenticationInfo(
                AuthenticationToken token) throws AuthenticationException {
            //获取用户输入的用户名
            String username = (String)token.getPrincipal();//获取身份信息
            System.out.println("username====="+username);
            //根据用户名到数据库查询密码信息---模拟
            //假定从数据库获取的密码为1111
            String pwd = "1111";
            //将从数据库中查询的信息封装到SimpleAuthenticationInfo中
            SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(username,pwd,getName());
            return info;
        }
        //授权的信息
        @Override
        protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection arg0) {
            return null;
        }
    }

    注意:使用shiro来完成权限管理,shiro并不会去维护数据。Shiro中使用的数据,需要程序员根据处理业务将数据传递给shiro的相应接口。

  • 相关阅读:
    c#对XML读取
    WPF--TypeConverter使用
    WPF---对于没有Command属性的添加以下代码可以达到有Command效果
    自定义事件、属性、方法
    读取Excel文件
    ClickOnce安装部署,手动。
    Logger 日志记录
    Maven
    等待与通知范式
    线程状态及基本方法
  • 原文地址:https://www.cnblogs.com/forever2h/p/6856155.html
Copyright © 2011-2022 走看看