Grails安全性插件:重定向帖子并传递其数据

时间:2011-01-12 11:08:39

标签: grails spring-security

在gsp上,我有一个转到控制器动作的提交。在该操作中,我想进行一些处理,然后将post参数从gsp传递到另一个POST方法。我怎么能这样做?

基本上,在重定向调用中是否专门处理了POST参数?因为我正在努力做到以下几点。我有一些我想用来创建用户帐户的自定义gsp。

<form action='save' method='POST' id='createForm' class='cssform' autocomplete='off'>
<input type='text' class='text' name='j_username'/>
<input type='password' class='text' name='j_password'/>
<input type='submit' value='Create' />
</form>

我的控制器中有一个保存操作,我想在db上创建用户,然后登录。

def save = {
// creating user on DB
def config = SpringSecurityUtils.securityConfig
String postUrl = "${request.contextPath}${config.apf.filterProcesse sUrl}"
redirect(uri: postUrl, params: params)
}

重定向到j_security_check会导致登录失败。我怀疑这是由于重定向。

2 个答案:

答案 0 :(得分:2)

您可以使用重定向:

redirect(action:'xyz', controller:'Abc', params:params)

或者你可以连锁行动:

chain(action:'abc', controller:'Xyz',model:["myObject":new MyDomain(params)])

Grails - Controllers - Redirects

答案 1 :(得分:1)

在RequestHolderAuthenticationFilter类中 添加这个“super.setPostOnly(false);”

公共类RequestHolderAuthenticationFilter扩展UsernamePasswordAuthenticationFilter {

@Override
public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException {
    SecurityRequestHolder.set((HttpServletRequest)request, (HttpServletResponse)response);
    try {
        super.setPostOnly(false);
        super.doFilter(request, response, chain);