我对Spring安全是个新手,需要帮助才能禁用http方法,如选项、PUT或DELETE。
发布于 2016-08-01 15:40:38
Spring拦截器url提供了一个方法参数,向下的大小是它只允许指定一个方法。
您可以通过为同一模式指定几个interceptor-url项来克服这一点
<http auto-config="true" use-expressions="true" >
<intercept-url pattern="/login " access="permitAll" />
<intercept-url pattern="/**" access=" hasRole('ROLE_ADMIN')" method="GET" />
<intercept-url pattern="/**" access=" hasRole('ROLE_ADMIN')" method="POST" />
</http>
另一种选择是编写自己的spring-security-expression,例如isPermitedMethod,下面的blog可能会有所帮助。
另请参阅:
发布于 2016-08-01 09:23:09
为什么不只有一个只允许GET的控制器方法呢?任何其他HTTP方法都将被自动拒绝。
@Controller
@RequestMapping("/releaseupdates")
public class ReleaseUpdateController {
@RequestMapping(method=RequestMethod.GET)
public String getRequest() {
//do something, only accepts GET
}
}
如果您希望允许其他方法,但只允许特定的用户/角色使用,那么您可以按照类似的方式配置这些细粒度的设置:https://www.mkyong.com/spring-security/spring-security-custom-login-form-annotation-example/
https://stackoverflow.com/questions/38687344
复制相似问题