默认值在插件的DefaultSecurityConfig.groovy文件中. 在应用中可以通过grails-app/conf/application.groovy和grails-app/conf/application.yml进行应用级配置.
(1) 默认的只有POST请求才会触发登录, 为了允许GET访问, 添加
grails.plugin.springsecurity.logout.postOnly = false
(2) 默认的密码加密码算法
bcrypt, 因为它是健壮性的哈希算法, 同进也推荐使用PBKDF2.
(3)固定SessinID 攻击保护
默认开启,可以关闭.
@Secured(value=["hasRole('ROLE_ADMIN')"], httpMethod='POST')
def someMethod() { ... }
也可以使用闭包进行特定验证, 当使用SpEL表达式时, 可以使用所有可用的方法和属性. 这是因为闭包的代理是WebSecurityExpressionRoot的子类.
@Secured(closure = {
assert request
assert ctx
authentication.name == 'admin1'
})
def someMethod() { ... }
通过grails.plugin.springsecurity.sch.strategyName可以修改策略, MODE_THREADLOCAL是默认的, 使用ThreadLocal. MODE_INHERITABLETHREADLOCAL使用InheritableThreadLocal, 也可以配置为SecurityContextHolderStrategy接口的实现类.
grails-app/conf/application.yml
environments:
development:
grails:
logging:
jul:
usebridge: true
plugin:
springsecurity:
debug:
useFilter: true
production:
grails:
logging:
jul:
usebridge: true
grails-app/conf/logback.groovy
logger 'grails.plugin.springsecurity.web.filter.DebugFilter', INFO, ['STDOUT'], false
3.0以后不在HTTP session中保存用户名, 可以通过
grails.plugin.springsecurity.apf.storeLastUsername=true
来继续保存 , 但在重新显示用户名时一定要进行转义, 避免XSS攻击.
最后欢迎大家访问我的个人网站:1024s