shiro入门
Posted cdeelen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shiro入门相关的知识,希望对你有一定的参考价值。
配置流程:
一、创建ini配置文件、配置参数。
规则如下:
1.[users]部分
#提供了对用户/密码及其角色的配置,用户名=密码,角色1,角色2
username=password,role1,role2
例如:
配置用户名/密码及其角色,格式:“用户名=密码,角色1,角色2”,角色部分可省略。如:
[users]
zhang=123,role1,role2
wang=123
2. [roles]
#提供了角色及权限之间关系的配置,角色=权限1,权限2
role1=permission1,permission2
例如:
配置角色及权限之间的关系,格式:“角色=权限1,权限2”;如:
[roles]
role1=user:create,user:update
role2=*
如果只有角色没有对应的权限,可以不配roles
3. [main]部分
提供了对根对象securityManager及其依赖对象的配置。
创建对象
securityManager=org.apache.shiro.mgt.DefaultSecurityManager
其构造器必须是public空参构造器,通过反射创建相应的实例。
1、对象名=全限定类名 相对于调用public无参构造器创建对象
2、对象名.属性名=值 相当于调用setter方法设置常量值
3、对象名.属性名=$对象引用 相当于调用setter方法设置对象引用
4.[urls]
#用于web,提供了对web url拦截相关的配置,url=拦截器[参数],拦截器
/index.html = anon
/admin/** = authc, roles[admin],perms["permission1"]
5.非标签。不同种类数据注入方式
5.1 Map setter注入
即格式是:map=key:value,key:value,可以注入常量及引用值,常量的话都看作字符串
例如:
authenticator.map=$jdbcRealm:$jdbcRealm,1:1,key:abc
5.2Array/Set/List setter注入
多个之间通过“,”分割。
例如:
authenticator.array=1,2,3
authenticator.set=$jdbcRealm,$jdbcRealm
5.3嵌套属性setter注入
例如:
securityManager.authenticator.authenticationStrategy=$authenticationStrategy
5.4对象引用setter注入
authenticator=org.apache.shiro.authc.pam.ModularRealmAuthenticator
securityManager.authenticator=$authenticator
5.5创建对象
其构造器必须是public空参构造器,通过反射创建相应的实例
securityManager=org.apache.shiro.mgt.DefaultSecurityManager
二、创建一个测试类
1、创建容器
2、构建信息校验对象
3、通过容器获得一个身份对象
4、校验
5、通过校验后返回的subject对象,获取权限信息
package my.shiroTest; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.AuthenticationToken; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.config.IniSecurityManagerFactory; import org.apache.shiro.mgt.SecurityManager; import org.apache.shiro.subject.Subject; public class ShiroMain public static void main(String[] args) //创建容器,通过shiro-core.config.IniSecurityManagerFactory ,读取配置文件 //创建工厂对象,然后再通过工厂对象获得securityManager对象 IniSecurityManagerFactory factory = new IniSecurityManagerFactory("classpath:shiro.ini"); //获得securityManager对象 SecurityManager securityManager = factory.getInstance(); //通过SecurityUtils工具类,设置使用的安全管理器为securityManager SecurityUtils.setSecurityManager(securityManager); //获取校验对象token,和配置文件中的配置信息对比 AuthenticationToken token = new UsernamePasswordToken("root", "123456"); //通过帮助类SecurityUtils,在容器中获取一个空的校验返回对象subject Subject subject = SecurityUtils.getSubject(); //校验用于名和密码,校验通过,将会登录用户信息填入subject中,否则为空 try Subject resultSubject = securityManager.login(subject, token); System.out.println(" 用户名" + resultSubject.getPrincipal()); System.out.println(resultSubject.isAuthenticated()); catch (AuthenticationException e) // TODO Auto-generated catch block e.printStackTrace();
以上是关于shiro入门的主要内容,如果未能解决你的问题,请参考以下文章
Unity 入门笔记 - 07(完) - 菜单&手机端&静态类&生成游戏