美文网首页
(一)helloworld

(一)helloworld

作者: guideEmotion | 来源:发表于2019-06-22 20:25 被阅读0次

一 介绍

shiro作为一款安全框架Shiro的设计相当精妙。Shiro的应用不依赖任何容器,它也可以在JavaSE下使用。但是最常用的环境还是JavaEE。下面以用户登录为例


image.png

二 配置文件

#定义用户
[users]
#用户名 zhang3  密码是 12345, 角色是 admin
zhang3 = 12345, admin 
#用户名 li4  密码是 abcde, 角色是 产品经理
li4 = abcde,productManager
#定义角色
[roles]
#管理员什么都能做
admin = *
#产品经理只能做产品管理
productManager = addProduct,deleteProduct,editProduct,updateProduct,listProduct
#订单经理只能做产品管理
orderManager = addOrder,deleteOrder,editOrder,updateOrder,listOrder

三 测试

登陆

    private static Subject getSubject() {
        //加载配置文件,并获取工厂
        Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
        //获取安全管理者实例
        SecurityManager sm = factory.getInstance();
        //将安全管理者放入全局对象
        SecurityUtils.setSecurityManager(sm);
        //全局对象通过安全管理者生成Subject对象
        Subject subject = SecurityUtils.getSubject();

        return subject;
    }
    
    
    private static boolean login(User user) {
        Subject subject= getSubject();
        //如果已经登录过了,退出
        if(subject.isAuthenticated())
            subject.logout();
        
        //封装用户的数据
        UsernamePasswordToken token = new UsernamePasswordToken(user.getName(), user.getPassword());
        try {
            //将用户的数据token 最终传递到Realm中进行对比
            subject.login(token);
        } catch (AuthenticationException e) {
            //验证错误
            return false;
        }               
        
        return subject.isAuthenticated();
    }

角色判断

    private static boolean hasRole(User user, String role) {
        Subject subject = getSubject();
        return subject.hasRole(role);
    }

权限判断

    private static boolean isPermitted(User user, String permit) {
        Subject subject = getSubject();
        return subject.isPermitted(permit);
    }

参考

  1. http://how2j.cn/k/shiro/shiro-tutorial/1720.html

相关文章

网友评论

      本文标题:(一)helloworld

      本文链接:https://www.haomeiwen.com/subject/ghqmqctx.html