概述
认证
创建一个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工具所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复