我正在开发一个需要将数据限制为特定用户的应用程序。我使用Spring Security Core来处理用户管理。我需要的是获取对已登录用户的引用,以便进行一些过滤操作。请考虑以下代码:
class Cliente {
Deposito deposito
String ci
String nombre
String telefono
String celular
static constraints = {
...
}
}
class Empresa {
Deposito deposito
String tipoDeEmpresa
String nombreDeEmpresa
String departamento
String provincia
String municipio
static constraints = {
...
}
}
class SecUser implements Serializable {
private static final long serialVersionUID = 1
Deposito deposito
String nombre
String username
String password
boolean enabled = true
boolean accountExpired
boolean accountLocked
boolean passwordExpired
...
}
我需要帮助这个GSP片段(生成form.gsp
视图)代码:
<div class="fieldcontain ${hasErrors(bean: clienteInstance, field: 'empresa', 'error')} required">
<label for="empresa">
<g:message code="cliente.empresa.label" default="Empresa"/>
<span class="required-indicator">*</span>
</label>
<g:select id="empresa" name="empresa.id" from="${org.socymet.proveedor.Empresa.findAllByDeposito(loggedUser.deposito,[sort: 'nombreDeEmpresa'])}" optionKey="id" required="" value="${clienteInstance?.empresa?.id}" class="many-to-one"/>
</div>
在调用Empresa.findAllByDeposito(loggedUser.deposito,[sort: 'nombreDeEmpresa'])
finder的行中,我需要用有效且正确的代码替换loggedUser,以获取对当前登录用户的引用。
我试图在Cliente
域类中实现一个方法,但我认为这不是一个好习惯。
提前致谢。
答案 0 :(得分:1)
您可以使用...
获取当前用户<sec:ifLoggedIn>
<sec:username />
</sec:ifLoggedIn>
您可以根据...等角色做出决定。
<sec:ifAnyGranted roles="ROLE_YOUR_ROLE">
// do stuff
</sec:ifAnyGranted>
默认情况下,角色在上面进行访问时带有ROLE_前缀,这将基于名为YOUR_ROLE的角色进行限制