我是靠谱客的博主 风趣蜜粉,最近开发中收集的这篇文章主要介绍Shiro-菜鸟实战篇-认证、授权、封装ShiroUtil工具,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

认证

创建一个Subject实例,该实例认证要使用上面创建的securityManager进行

SecurityUtils.setSecurityManager(securityManager);

创建一个Subject实例,该实例认证要使用上面创建的securityManager进行

Subject subject=SecurityUtils.getSubject();

创建token令牌,记录用户认证的身份和凭证即证号和密码

UsernamePasswordToken token=new UsernamePasswordToken("zhangsan","123456");

主体要进行登录,登录的时候进行认证的检查

subject.login(token);

看下整体:

public class ShiroTest {
    @Test
    public void test(){
        //1.初始化shiro的安全管理器
        DefaultSecurityManager securityManager=new DefaultSecurityManager();
        //2.设置用户的权限信息到安全管理器
        Realm realm=new IniRealm("classpath:shiro.ini");
        securityManager.setRealm(realm);
        //3.使用SecurityUtils将securityManager设置到运行环境中
        SecurityUtils.setSecurityManager(securityManager);
        //4.创建一个Subject实例,该实例认证要使用上面创建的securityManager进行
        Subject subject=SecurityUtils.getSubject();
        //5.创建token令牌,记录用户认证的身份和凭证即证号和密码
        UsernamePasswordToken token=new UsernamePasswordToken("zhangsan","123456");
        //6.主体要进行登录,登录的时候进行认证的检查
        subject.login(token);
    }
}

测试下看下是否认证成功

在这里插入图片描述
成功通过认证,接下来就进行授权。

授权
检查授权资源情况,用户想访问某个资源,看下对这个资源是否有访问权限

1.用户角色授权状态

System.out.println("是否拥有admin角色"+subject.hasRole("admin"));

2.用户资源授权状态

System.out.println("是否拥有产品权限"+subject.isPermitted("product:view"));

获取一下主体的用户信息

System.out.println("用户名:"+subject.getPrincipal());

退出

subject.logout();

此处用到的文件shiro.ini

[users]
zhangsan=123456,admin
lisi=654321,public
[roles]
admin=product:view,product:create,product:update,product:delete
public=product:view

看下整体

public class ShiroTest {
    @Test
    public void test(){
        //1.初始化shiro的安全管理器
        DefaultSecurityManager securityManager=new DefaultSecurityManager();
        //2.设置用户的权限信息到安全管理器
        Realm realm=new IniRealm("classpath:shiro.ini");
        securityManager.setRealm(realm);
        //3.使用SecurityUtils将securityManager设置到运行环境中
        SecurityUtils.setSecurityManager(securityManager);
        //4.创建一个Subject实例,该实例认证要使用上面创建的securityManager进行
        Subject subject=SecurityUtils.getSubject();
        //5.创建token令牌,记录用户认证的身份和凭证即证号和密码
        UsernamePasswordToken token=new UsernamePasswordToken("zhangsan","123456");
        System.out.println("用户认证状态:"+subject.isAuthenticated());
        //6.主体要进行登录,登录的时候进行认证的检查
        subject.login(token);
        System.out.println("用户认证状态:"+subject.isAuthenticated());
        //7.检查授权资源情况,用户想访问某个资源,看下对这个资源是否有访问权限
        //用户角色授权状态
        System.out.println("是否拥有admin角色"+subject.hasRole("admin"));
        //用户资源授权状态
        System.out.println("是否拥有产品权限"+subject.isPermitted("product:view"));

        //获取一下主体的用户信息
        System.out.println("用户名:"+subject.getPrincipal());
        //退出
        subject.logout();
        System.out.println("用户认证状态:"+subject.isAuthenticated());

    }
}

进行测试,看下结果
在这里插入图片描述
封装ShiroUtil工具
目的:重复的代码进行封装,代码复用,便于以后使用。

简单的封装一下,后续会进行完善。
编写工具类

public class ShiroUtil {
    static {
        //1.初始化shiro的安全管理器
        DefaultSecurityManager securityManager=new DefaultSecurityManager();
        //2.设置用户的权限信息到安全管理器
        Realm realm=new IniRealm("classpath:shiro.ini");
        securityManager.setRealm(realm);
        //3.使用SecurityUtils将securityManager设置到运行环境中
        SecurityUtils.setSecurityManager(securityManager);
    }
    public static Subject login(String name,String password){
        //4.创建一个Subject实例,该实例认证要使用上面创建的securityManager进行
        Subject subject=SecurityUtils.getSubject();
        //5.创建token令牌,记录用户认证的身份和凭证即证号和密码
        UsernamePasswordToken token=new UsernamePasswordToken(name,password);
        //6.主体要进行登录,登录的时候进行认证的检查
        subject.login(token);
        System.out.println("用户认证状态:"+subject.isAuthenticated());
        return subject;
    }
}

修改测试类

public class ShiroTest {
    @Test
    public void test(){

        Subject subject= ShiroUtil.login("zhangsan","123456");
        //7.检查授权资源情况,用户想访问某个资源,看下对这个资源是否有访问权限
        //用户角色授权状态
        System.out.println("是否拥有admin角色"+subject.hasRole("admin"));
        //用户资源授权状态
        System.out.println("是否拥有产品权限"+subject.isPermitted("product:view"));

        //获取一下主体的用户信息
        System.out.println("用户名:"+subject.getPrincipal());
        //退出
        subject.logout();
        System.out.println("用户认证状态:"+subject.isAuthenticated());

    }
}

测试一下

在这里插入图片描述上文链接:https://haosy.blog.csdn.net/article/details/103604934
下文链接:https://haosy.blog.csdn.net/article/details/103635750
Shiro系列专题链接:https://blog.csdn.net/qq_43518645/category_9604248.html

2019/12/19学习记录。

最后

以上就是风趣蜜粉为你收集整理的Shiro-菜鸟实战篇-认证、授权、封装ShiroUtil工具的全部内容,希望文章能够帮你解决Shiro-菜鸟实战篇-认证、授权、封装ShiroUtil工具所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(31)

评论列表共有 0 条评论

立即
投稿
返回
顶部