扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这期内容当中小编将会给大家带来有关使用shiro怎么对INI进行配置,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

根对象SecurityManager
从之前的Shiro架构图可以看出,Shiro是从根对象SecurityManager进行身份验证和授权的;也就是所有操作都是自它开始的,这个对象是线程安全且真个应用只需要一个即可,因此Shiro提供了SecurityUtils让我们绑定它为全局的,方便后续操作。
因为Shiro的类都是POJO的,因此都很容易放到任何IoC容器管理。但是和一般的IoC容器的区别在于,Shiro从根对象securityManager开始导航;Shiro支持的依赖注入:public空参构造器对象的创建、setter依赖注入。
1、纯Java代码写法(com.github.zhangkaitao.shiro.chapter4.NonConfigurationCreateTest):
DefaultSecurityManager securityManager = new DefaultSecurityManager(); 
//设置authenticator 
ModularRealmAuthenticator authenticator = new ModularRealmAuthenticator(); 
authenticator.setAuthenticationStrategy(new AtLeastOneSuccessfulStrategy()); 
securityManager.setAuthenticator(authenticator); 
 
//设置authorizer 
ModularRealmAuthorizer authorizer = new ModularRealmAuthorizer(); 
authorizer.setPermissionResolver(new WildcardPermissionResolver()); 
securityManager.setAuthorizer(authorizer); 
//设置Realm 
DruidDataSource ds = new DruidDataSource(); 
ds.setDriverClassName("com.mysql.jdbc.Driver"); 
ds.setUrl("jdbc:mysql://localhost:3306/shiro"); 
ds.setUsername("root"); 
ds.setPassword(""); 
 
JdbcRealm jdbcRealm = new JdbcRealm(); 
jdbcRealm.setDataSource(ds); 
jdbcRealm.setPermissionsLookupEnabled(true); 
securityManager.setRealms(Arrays.asList((Realm) jdbcRealm)); 
 
//将SecurityManager设置到SecurityUtils 方便全局使用 
SecurityUtils.setSecurityManager(securityManager); 
Subject subject = SecurityUtils.getSubject(); 
UsernamePasswordToken token = new UsernamePasswordToken("zhang", "123"); 
subject.login(token); 
Assert.assertTrue(subject.isAuthenticated());   
                    
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流