角色本质上就是一组权限的集合 起了一个别名。

 
 
 
1.默认不支持连接数据库 第一个demo还使用假数据
ini配置文件信息,模拟数据
[users]
zhangsan=123456,admin
lisi=123456,admin
lilei=123456,admin
hanmm=123456,superadmin
[roles]
admin=user:select,guru:select
superadmin=user:*,guru:*
 
public void test3(){
            /**
             * 认证流程
             *
             * 1.读取配置文件
             */
            IniSecurityManagerFactory factory = new IniSecurityManagerFactory("classpath:datasources.ini");
            SecurityManager securityManager = factory.getInstance();
            /**
             * 2.将安全管理器 赋值 工具类
             */
            SecurityUtils.setSecurityManager(securityManager);
            /**
             * 3.获取页面输入的账号密码 封装为token
             */
            UsernamePasswordToken token = new UsernamePasswordToken(username, password);
            /**
             * 4.获取Subject
             */
            Subject subject = SecurityUtils.getSubject();
            /**
             * 5.登录
             */
            try {
                subject.login(token);
                System.out.println("登录成功");
            }catch (Exception e){
                System.out.println("登录失败");
            }
/**
             * 判断是否登录成功 如果成功就可以查看用户有没有添加用户 和 删除用户 以及 查看用户的权限
             *
             * 查看用户 有没有 普通管理员的角色
             */
            if(subject.isAuthenticated()){
                /**
                 * 代码式授权 通过方法校验用户有没有某个权限
                 * 标签式
                 * 注解式
                 */
                /**
                 * 有没有查询用户权限
                 */
                boolean permitted = subject.isPermitted("user:select");
                System.out.println(permitted);
                /**
                 * 有没有 普通管理员的角色
                 */
                boolean admin = subject.isPermitted("admin");
                System.out.println(admin);
            }
        }