学了一段时间的shiro后,有点明白shiro的思路了,shiro你要把它看成一个权限服务器,你用subject.login(身份)去登录它,这样就进入了securityManager,进入securityManager就意味着进入了shiro服务器;
但你要使用这个服务器提供的一些API,你必须进入API的入口, authenticator就相当于是认证API的入口;所以配置文件的[main]标签中常这样写:
[main]
#验证对象的入口
authenticator=org.apache.shiro.authc.pam.ModularRealmAuthenticator
#验证策略
authenticationStrategy=org.apache.shiro.authc.pam.FirstSuccessfulStrategy
#验证对象与验证策略的关系
authenticator.authenticationStrategy=$authenticationStrategy
#shiro验证api入口
securityManager.authenticator=$authenticator
不仅要有验证,而且还要有授权,所以,还要有授权入口,只有通过了授权入口,你才可以使用授权api;所以配置文件中还要加上如下内容:
#authorizer 是授权对象的入口
authorizer=org.apache.shiro.authz.ModularRealmAuthorizer
#权限的表示方式是字符串形
permissionResolver=org.apache.shiro.authz.permission.WildcardPermissionResolver authorizer.permissionResolver=$permissionResolver
securityManager.authorizer=$authorizer
如果是要自定义Realm进行认证,还必须要写Realm,本例以jdbc的Realm为例进行验证的,因为jdbcRealm是shiro的Realm中己经写好了,所以,不需要自己去写代码,只需要在后面加上securityManager.realms=$jdbcRealm 这一句就行了。
#realm
dataSource=com.alibaba.druid.pool.DruidDataSource
dataSource.driverClassName=com.mysql.jdbc.Driver
dataSource.url=jdbc:mysql://localhost:3306/shiro
dataSource.username=root
#dataSource.password=
jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.dataSource=$dataSource
jdbcRealm.permissionsLookupEnabled=true
jdbcRealm.authenticationQuery = SELECT password FROM users WHERE username = ?
securityManager.realms=$jdbcRealm
把上面的红字部分,全部汇总,罗列在ini文件中,就形成了shiro.ini文件的配置
完毕
金庭波 QQ14280784 2018年3月14日 22:30分于家中