1、配置
使用配置获得SecurityManager,SecurityManager是核心,配置好并获取到SecurityManager,Shiro就算正式运行起来了。
两种方式:通过ini文件;通过ini实例
ini文件的格式
段:一个ini文件分为4段内容,段用[]表示;每段用键值对来进行配置
[main]:SecurityManager相关对象及其属性
[users]:静态定义的用户信息
[roles]:静态定义的角色信息
[urls]:Web应用中基于URL的安全控制
[main] #定义对象 sha256Matcher = org.apache.shiro.authc.credential.Sha256CredentialsMatcher #定义对象及其属性 myRealm = com.company.security.shiro.DatabaseRealm myRealm.connectionTimeout = 30000 myRealm.username = jsmith myRealm.password = secret #引用对象 myRealm.credentialsMatcher = $sha256Matcher #定义嵌套属性 securityManager.sessionManager.globalSessionTimeout = 1800000 #集合属性 securityManager.sessionManager.sessionListeners = $listen1,$listen2 anObject = some.class.with.a.Map.property anObject.mapProperty = key1:$obj1,key2:$obj2 #重写覆盖 myRealm = com.company.security.MyRealm myRealm = com.company.security.DatabaseRealm #自定义SecurityManager securityManager = com....MyCustomerSecurityManager [users] #格式:用户名 = 密码,角色1,角色2,角色3... admin = secret louis = 520,admin yang = 1234,customer,controller [roles] #格式:角色名 = 权限表达式1,权限表达式2..... #权限表达式的格式:类型:操作:id,使用*通配符 #admin角色拥有所有权限 admin = * #louis角色可以做sale类型的任何事 louis = sale:* #yang角色可以做sale类型下confirm事件,且只能操作0001id yang = sale:confirm:0001 [urls] 后面再讲
一般使用ini的方式配置,除非运行环境内存小,有限制,才用编程模式
2、术语
了解一下Shiro中用到的一些英文术语
Authentication:认证
Authorization:授权
Credential:用户凭证,如密码、token
Principal:用户标识,如用户名
Subject:用户
Role:角色
Permission:功能权限
Session:会话
Realm:安全DAO
Cryptography:密码术
Cipher:加密算法
Hash:散列算法