Spring Security Core Plugin 一

配置

默认值在插件的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 注解

@Secured(value=["hasRole('ROLE_ADMIN')"], httpMethod='POST')
def someMethod() { ... }

也可以使用闭包进行特定验证, 当使用SpEL表达式时, 可以使用所有可用的方法和属性. 这是因为闭包的代理是WebSecurityExpressionRoot的子类.

@Secured(closure = {
   assert request
   assert ctx
   authentication.name == 'admin1'
})
def someMethod() { ... }

SecurityContextHolder strategy

通过grails.plugin.springsecurity.sch.strategyName可以修改策略, MODE_THREADLOCAL是默认的, 使用ThreadLocal. MODE_INHERITABLETHREADLOCAL使用InheritableThreadLocal, 也可以配置为SecurityContextHolderStrategy接口的实现类.

Debug 过滤器

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

在session中保存用户名

3.0以后不在HTTP session中保存用户名, 可以通过

grails.plugin.springsecurity.apf.storeLastUsername=true

来继续保存 , 但在重新显示用户名时一定要进行转义, 避免XSS攻击.

 

最后欢迎大家访问我的个人网站:1024s​​​​​​​

你可能感兴趣的:(秒扒Spring)