Grails2.0中如何用Shiro实现BasicHttpAuthentication?有无示例?
Grails Shiro 配置问题解答
1. 是否需要使用shiro.ini文件?
不需要。
Grails官方Shiro插件默认优先使用Grails生态内的Groovy配置类(你当前用到的securityFilter.groovy、BootStrap.groovy、BuildConfig.groovy等)加载规则,优先级高于shiro.ini。只要你已经完成grails shiro start初始化,现有配置完全可以覆盖常规功能需求,不需要额外创建shiro.ini文件,仅当你有特殊的INI格式配置需求时才需要补充。
2. Basic HTTP认证非交互式登录配置步骤
- 第一步:开启Basic认证支持
在grails-app/conf/Config.groovy中添加如下配置:
// 启用Basic HTTP认证能力 security.shiro.basic.enabled = true // 自定义认证领域标识,非交互场景可任意填写 security.shiro.basic.realmName = "你的应用服务"
- 第二步:配置路径过滤规则
修改securityFilter.groovy,给需要走非交互登录的路径指定authcBasic过滤器,原有Web端的表单登录规则保持不变即可:
security { filters { // 示例:所有/api前缀的接口走Basic认证,适配非交互调用场景 apiRoute(uri: '/api/**') { before = { accessControl { authcBasic() } } } // 原有Web页面的表单登录规则保留 webRoute(uri: '/**') { before = { accessControl { authc() } } } } }
- 第三步:调用端适配
非交互式调用时,调用方只需要在请求头中添加Authorization字段即可完成自动登录,格式为:Authorization: Basic <Base64编码的「用户名:密码」字符串>
注意:Basic认证本身不会加密传输凭证,生产环境必须配合HTTPS使用,避免用户名密码泄露。
- 可选:自定义认证失败返回
如果需要自定义Basic认证失败的响应格式,可继承org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter重写onAccessDenied方法,再在Shiro配置中替换默认的authcBasic过滤器即可。
内容的提问来源于stack exchange,提问作者Dani
相关产品推荐
相关产品推荐

