IDEA创建第一个shiro程序

1、pom.xml添加依赖

<dependency>
    <groupId>org.apache.shiro</groupId>  
    <artifactId>shiro-core</artifactId>  
    <version>1.4.0</version>  
</dependency> 

2、创建realm.java,继承AuthorizingRealm ,重写doGetAuthorizationInfo,doGetAuthenticationInfo方法

 // 授权
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(
            PrincipalCollection principalCollection) {
        return null;
    }

    // 认证
    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token)
            throws AuthenticationException {

        System.out.println(getName());
        //还记得吗,token封装了客户端的帐号密码,由Subject拉客并最终带到此处
        String clientUsername = (String) token.getPrincipal();
        //模拟一个Service
        SecurityService securityService = new SecurityService();
        //通过Service查询数据库,获取到正确的密码
        String passwordFromDB = securityService.findPasswordByUsername(clientUsername);
        if (passwordFromDB == null) {
            //如果根据用户输入的用户名,去数据库中没有查询到相关的密码
            throw new UnknownAccountException();
        }
        return new SimpleAuthenticationInfo(clientUsername,passwordFromDB,getName());

3、编写测试代码

// 注意:这里 SecurityManager 所在的包名
        // 读取配置文件,初始化SecurityManager工厂
        Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
        SecurityManager securityManager = factory.getInstance();
        // 把 securityManager 的实例绑定到 SecurityUtils 上
        SecurityUtils.setSecurityManager(securityManager);

        // 得到当前执行的用户
        Subject currentUser = SecurityUtils.getSubject();

        // 自己创建一个令牌
        UsernamePasswordToken token = new UsernamePasswordToken("zhouguang","123456");
        try {
            // 身份认证
            currentUser.login(token);
            System.out.println("身份认证成功");
        } catch (AuthenticationException e) {
            System.out.println("认证失败");
            e.printStackTrace();
        }
        System.out.println("退出登录");
        // 最后别忘了退出登录(shiro还会做很多操作,从控制台就可以看出)
        currentUser.logout();
        System.out.println("退出登录成功");

4、配置shiro.ini文件

在resources中创建shiro.ini文件,在文件中添加

[main]
myRealm=com.xjl.shrio.MyRealm
securityManager.realms=$myRealm

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值