shiro.ini 配置详解
引用:
【1】开涛的《跟我学shiro》
【2】《SpringMVC整合Shiro》
【3】《shiro简单配置》
【4】Apache shiro集群实现 (一) shiro入门介绍
shiro.ini文件默认在_/WEB-INF/_ 或_classpath_下。shiro会自动查找
#‘#’为注释
[main]
#↓修改默认跳转页
#↓shiro 认证失败后默认redirect到/login.jsp.这里修改默认项
authc.loginUrl = /login
#↓登录成功默认跳转页面,不配置则跳转至”/”。如果登陆前点击的一个需要登录的页面,则在登录自动跳转到那个需要登录的页面。不跳转到此。
authc.successUrl = /user
#↓修改角色认证默认地址
roles.unauthorizedUrl = /roles/unauthorized
#↓修改权限认证默认地址
perms.unauthorizedUrl = /perms/unauthorized
#realm
#↓默认会按此声明顺序拦截判断,这里的顺序是先走myRealm2,再走myRealm
myRealm2 = com.myproject.shiro.ShiroRealm2
myRealm = com.myproject.shiro.ShiroRealm
#↓可使用此方法,配置单个或多个,或指定顺序
#↓如果这里注释去掉,则指定只走myRealm2
#securityManager.realm = $myRealm2
#dateSource
#↓ 使用 JdbcRealm 作为当前验证的Realm
jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm
#↓ 使用druid数据源
dataSource=com.alibaba.druid.pool.DruidDataSource
#↓ MySQL驱动
dataSource.driverClassName=com.mysql.jdbc.Driver
#↓ MySQL相关参数配置
dataSource.url=jdbc:mysql://localhost:3306/msshop
dataSource.username=root
dataSource.password=root
#↓ 引入相关数据配置
jdbcRealm.dataSource=$dataSource
#↓这里是默认的sql查询语句,可以自己设定,但参数不能修改,只有一个,且相对应。
jdbcRealm.authenticationQuery = select password from users where username = ?
#jdbcRealm.userRolesQuery = select role_name from user_roles where username = ?
#jdbcRealm.permissionsQuery = select permission from roles_permissions where role_name = ?
#↓是否
#jdbcRealm.permissionsLookupEnabled = false
#saltStyle =NO_SALT , CRYPT, COLUMN, EXTERNAL;
#jdbcRealm.saltStyle = COLUMN
securityManager.realms=$jdbcRealm
#cache
#shiroCacheManager = org.apache.shiro.cache.ehcache.EhCacheManager
#shiroCacheManager.cacheManagerConfigFile = classpath:ehcache-shiro.xml
#securityManager.cacheManager = $shiroCacheManager
#session
sessionDAO = org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO
sessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager
sessionDAO.activeSessionsCacheName = shiro-activeSessionCache
sessionManager.sessionDAO = $sessionDAO
securityManager.sessionManager = $sessionManager
securityManager.sessionManager.globalSessionTimeout = 3600000
#这里的规则,web.xml中的配置的ShiroFilter会使用到。
[urls]
/ = anon
/login = anon
/suc = authc
#/rpc/rest/** = perms[rpc:invoke], authc
/admin/** = authc
#用户身份/凭据
[users]
li=123,guest
sun=123,admin
[roles]
admin = *
有一点说明下:
//这是授权方法
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
String userName = (String) getAvailablePrincipal(principals);
//TODO 通过用户名获得用户的所有资源,并把资源存入info中
SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
//这里有一点说明下:
//这里set的只是把【已有】的权限、角色放到当前验证的集合中,并不是给用户【设置新的】权限、角色
//【已有】的权限、角色是在配置文件中,或在库表中,这里只是取出放到集合中。
info.setStringPermissions(set集合);
info.setRoles(set集合);
info.setObjectPermissions(set集合);
return info;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗