You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 19:15:05