Shiro入门

Shiro简介

Shiro是java的一个安全框架,主要用于完成认证,加密,会话管理,Web集成,缓存等。

Shiro三大核心对象

Subject

主体,代表当前操作用户对象

SecurityManager

安全管理器,管理所有的subject对象,用于安全交互,是Shiro的执行者

Realm

域,Shiro从Realm中获取安全数据(角色,用户,权限),是Shiro的安全数据源

代码测试

public class ShiroTest {
    Subject subject = null;
    @Before
    public void before(){
        //创建shiro的核心对象SecurityManagerg根
        DefaultSecurityManager securityManager = new DefaultSecurityManager();
        //创建一个读取ini配置文件的Realm
        IniRealm iniRealm = new IniRealm("classpath:shiro.ini");
        //设置根对象的Realm
        securityManager.setRealm(iniRealm);
        //把创建好的根对象提供到utils工具类中使用
        SecurityUtils.setSecurityManager(securityManager);
    }
    @Test
    public void testShiro(){
        //得到subject用户授权对象
        subject = SecurityUtils.getSubject();
        //该对象用于subject.login调用realm,到配置文件中匹配是否正确
        UsernamePasswordToken token =
                new UsernamePasswordToken("admin","123");
        try {
            subject.login(token);
        } catch (UnknownAccountException e) {
            System.out.println("用户名不存在");
        }catch (IncorrectCredentialsException e){
            System.out.println("密码不正确");
        }
        System.out.println("subject.isAuthenticated()::"+subject.isAuthenticated());
        System.out.println("subject.getSession()::"+subject.getSession());
        System.out.println("subject.getSession().getAttributeKeys()::"+subject.getSession().getAttributeKeys());
        System.out.println("subject.getSession().getAttribute(DefaultSubjectContext.AUTHENTICATED_SESSION_KEY)::"+subject.getSession().getAttribute(DefaultSubjectContext.AUTHENTICATED_SESSION_KEY));
        System.out.println("subject.getSession().getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY)::"+subject.getSession().getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY));
        System.out.println("subject.getPrincipal()::"+subject.getPrincipal());


    }
}

shiro.ini

[users]
admin=123
运行结果
subject.isAuthenticated()::true
subject.getSession()::org.apache.shiro.subject.support.DelegatingSubject$StoppingAwareProxiedSession@2f7c7260
subject.getSession().getAttributeKeys()::[org.apache.shiro.subject.support.DefaultSubjectContext_AUTHENTICATED_SESSION_KEY, org.apache.shiro.subject.support.DefaultSubjectContext_PRINCIPALS_SESSION_KEY]
subject.getSession().getAttribute(DefaultSubjectContext.AUTHENTICATED_SESSION_KEY)::true
subject.getSession().getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY)::admin
subject.getPrincipal()::admin
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值