站在用户的角度来讲,如果应用程序不用每次都提示他们登录是更好的。这就是为什么许多站点提供了Remember-me功能。你只要登录过一次,应用就会记住你。 Spring Security使得为应用添加Remember-me功能变得非常容易。只需要在configure()方法所传入的HttpSecurity对象上调用rememberMe()即可。
<formmethod="POST"action="http://www.spittr.com/Spittles"> <inputtype="hidden"name="massage"value="I'm a stupid" /> <inputtype="submit"value="Click here to win a new car!"/> </form>1234
这是跨站请求伪造(cross-site request forgery,CRSF)的一个简单样例。简单来讲,入过一个站点欺骗用户提交请求到其他服务器的话,就会发生CSRF攻击,这可能会带来很严重的后果。 从Spring Security3.2开始,默认就会启用CSRF攻击。 Spring Security通过一个同步token的方式来实现CSRF防护。它会拦截状态变化的请求并检查CSRF token。如果请求不包含CSRF token,或token不能与服务器端的token相匹配,请求将会失败,并抛出CsrfException。 Spring Security已经简化了将token放到请求的属性中这一任务。
Spring Security内部默认的查询语句是写定的,可能在某些情况下并不适用。我们可以按照如下的方式配置自己的查询:
1 2 3 4 5 6 7 8
@Override protectedvoidconfigure(Authentication auth)throws Exception{ auth .jdbcAuthentication() .dataSource(dataSource) .usersByUsernameQuery("select username,password,true from Spitter where username=?") .authoritiesByUsernameQuery("select username,'ROLE_USER' from Spitter where username=?"); }