【问题标题】:Grails spring-security-shiro : working with Apache Shiro subject in gsp - migrating from shiro to spring-security-shiroGrails spring-security-shiro:在 gsp 中使用 Apache Shiro 主题 - 从 shiro 迁移到 spring-security-shiro
【发布时间】:2017-09-28 13:06:58
【问题描述】:

我正在将现有应用程序从 Grails 2.4.4 升级到 Grails 3.2.8。我正在尝试从 grails shiro 插件迁移到 grails spring-security-shiro 插件。除了访问已登录的用户之外,我还想在布局模板 gsp 中执行正常的登录检查。

这是我之前在布局 gsp 中的内容

ma​​in.gsp

<g:if test="${shiro.principal()}">
    Welcome back 
    <g:link controller="account" action="profile">
        <shiro:principal/>
    </g:link>|
    <g:link controller="auth" action="signOut" class="navbar-brand">Logout</g:link>
</g:if>
<g:else>
    <g:link controller="auth" action="login" class="navbar-brand">Login</g:link>
</g:else>

【问题讨论】:

  • 嗨麦克罗托。我正在从 grails 2.2.5 迁移到 grails 3.2.9。我也在使用 grails-shiro 插件。此插件不再有效。您是否能够迁移到 spring-security-shiro?
  • 是的,但不是没有一点工作。我还不得不为第一关做出一些牺牲。我不得不主要使用 spring security api,我最终可能只需要完全转向 spring security。你在哪里挂机?

标签: grails spring-security shiro


【解决方案1】:

我最终使用了 spring security core 的 api 来执行我需要的操作。我还需要创建一些预期的自定义登录屏幕。您可能只是使用自定义权限逻辑跳转到 Spring Security。见下文。

http://grails-plugins.github.io/grails-spring-security-core/3.2.x/index.html#securityTagLib

<sec:ifLoggedIn>
    Welcome back 
    <g:link controller="account" action="profile">
        <sec:username/>
    </g:link>|
    <g:link controller="logout">Logout</g:link>
</sec:ifLoggedIn>
<sec:ifNotLoggedIn>
    <g:link controller="auth" action="your_custom_login">Login</g:link>
</sec:ifNotLoggedIn>

权限逻辑

我按照建议从严格基于字符串的权限切换到 Permission 对象

Account.groovy

static hasMany = [ permissions: Permission ]

权限

class Permission {

   Account account
   String permission

   static constraints = {
   }
}

使用方法:

def permission = accountInstance.permissions.find { 
    it.permission == "account:customer_profile:${accountInstance.id}" 
}
if (!permission){
    flash.message = "You do not have permission to access this..."
    redirect(controller:'controller', action:'index')
    return
}

【讨论】:

    猜你喜欢
    • 2016-12-17
    • 2016-04-08
    • 2019-05-28
    • 2016-12-21
    • 2014-08-31
    • 2017-09-24
    • 1970-01-01
    • 2012-06-24
    相关资源
    最近更新 更多