如何使用 shiro 在 grails 2.0 中实现 BasicHttpAuthentication?有啥亮眼的例子吗?

Posted

技术标签:

【中文标题】如何使用 shiro 在 grails 2.0 中实现 BasicHttpAuthentication?有啥亮眼的例子吗?【英文标题】:How do you implement BasicHttpAuthentication in grails 2.0 using shiro? Any shinning example?如何使用 shiro 在 grails 2.0 中实现 BasicHttpAuthentication?有什么亮眼的例子吗? 【发布时间】:2021-12-12 02:46:48 【问题描述】:

我当前的项目设置已经有 shiro 1.1.4,它使用登录和注销。例如,该项目已经设置了 grails shiro start。该项目使用了 securityFilter.groovy、AuthController.groovy 和 BootStrap.groovy。该插件是通过 BuildConfig.groovy 配置的。 我需要 shiro.ini 文件吗? 如何使用基本 http 身份验证设置非交互式登录?

【问题讨论】:

【参考方案1】:

我还在旧的 grails 2.4.2 Project 中使用通过 HttpBasicAuth 连接到几个控制器的能力。

一般来说,应用程序是通过 Apache-Shiro 保护的,但我在应用程序中有 2 个需要 BasicAuth 的包/控制器。

因此我扩展了 UrlMappings.groovy 文件:

class UrlMappings 

    static mappings = 
        group("/api") 
            "/api/$action?/$id?(.$format)?"(controller: 'api')
        

        group("/dw") 
            "/dw/$action?/$id?(.$format)?"(controller: 'dw')
        
        ...

和 Config.groovy:

security 
    shiro 
        authc.required = false
        filter.config = """\
[filters]
# HTTP Basic authentication
authcBasic = org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter
authcBasic.applicationName = MyGrailsApp API
[urls]
/api/** = authcBasic
/dw/** = authcBasic
"""
    

【讨论】:

谢谢@susi。不过,您将如何避免使用 API? 您好@Dani,您的意思是通过基本身份验证访问所有内容(每个控制器和操作)?在这种情况下,我认为您不需要组映射并设置 /*/** = authBasic ...只是猜测...

以上是关于如何使用 shiro 在 grails 2.0 中实现 BasicHttpAuthentication?有啥亮眼的例子吗?的主要内容,如果未能解决你的问题,请参考以下文章

没有 Spring 安全性的 Grails 的 OAuth 2.0

如何在grails shiro中使用缓存权限

如何在 grails shiro 中使用缓存权限

如何在我的项目中实现 Grails 的 Shiro 安全性

使用 Grails Shiro 插件实现 AuthorizingRealm

使用 Shiro 插件保护 Grails 应用程序中的一些页面,但不是所有页面