i've tried without success customize login page in spring security core 3.1.1. created login directory in views directory , auth.gsp in login directory , put custom form there. here code:
<g:form name="form-login" method="post" action="${resource('file': 'j_spring_security_check')}"> <label for="j_username">username:</label> <g:textfield name="j_username"/> <label for="j_password">password:</label> <g:passwordfield name="j_password"/> <g:submitbutton name="login" value="log in" /> </g:form>
it takes username , password alright upon clicking login button, still shows form. solutions.
that's old form using old action
address (the core problem that's causing redirect) , old names username/password (the lurking problem have been more frustrating because fail correct values, since they're not usable if they're set wrong parameter names).
it's not simple in 3.x in 2.x override plugin files. in 2.x plugins zip files unpacked in project root's target
directory, , can valid and/or crazy things plugin source. in 3.x plugins compiled jars, reduced total amount of crazy, have made harder valid things this.
but open source software, , exact .gsp file or 1 that's close enough easy find in source repo, here.
auth.gsp
changes it's fine latest file master branch, or through history (recentl builds , future builds continue tagged) easy older version, e.g. from version 3.0.4.
that's not neccessarily final answer though because plugin configurable, , can override several variables used in gsp in config, should replace code looks values values since app unlikely benefit flexibility. defaults config settings in defaultsecurityconfig.groovy
, left gsps inside lookup code, need remove , retain values.
here's inner form
element (you need whole file i'm not showing parts don't need changes):
<form action="${posturl ?: '/login/authenticate'}" method="post" id="loginform" class="cssform" autocomplete="off"> <p> <label for="username"><g:message code='springsecurity.login.username.label'/>:</label> <input type="text" class="text_" name="${usernameparameter ?: 'username'}" id="username"/> </p> <p> <label for="password"><g:message code='springsecurity.login.password.label'/>:</label> <input type="password" class="text_" name="${passwordparameter ?: 'password'}" id="password"/> </p> <p id="remember_me_holder"> <input type="checkbox" class="chk" name="${remembermeparameter ?: 'remember-me'}" id="remember_me" <g:if test='${hascookie}'>checked="checked"</g:if>/> <label for="remember_me"><g:message code='springsecurity.login.remember.me.label'/></label> </p> <p> <input type="submit" id="submit" value="${message(code: 'springsecurity.login.button')}"/> </p> </form>
and initial pass want change this:
<form action="/login/authenticate' method="post" id="loginform" class="cssform" autocomplete="off"> <p> <label for="username"><g:message code='springsecurity.login.username.label'/>:</label> <input type="text" class="text_" name="username" id="username"/> </p> <p> <label for="password"><g:message code='springsecurity.login.password.label'/>:</label> <input type="password" class="text_" name="password" id="password"/> </p> <p id="remember_me_holder"> <input type="checkbox" class="chk" name="remember-me" id="remember_me"/> <label for="remember_me"><g:message code='springsecurity.login.remember.me.label'/></label> </p> <p> <input type="submit" id="submit" value="${message(code: 'springsecurity.login.button')}"/> </p> </form>
you can use whatever post url , username/password param names want including old ones, need set config properties spring security filter processes logins looking @ correct uri , expecting param names you're sending. if you're ok defaults work, , can of course make whatever regular html , css/js changes want.
Comments
Post a Comment