[导读]为控制器添加注解是非常简单的,但这往往并不是最可行的方案。有时候,我们会想要完全控制授权功能。

为控制器添加注解是非常简单的,但这往往并不是最可行的方案。有时候,我们会想要完全控制授权功能。

移除@Secured 注解,我们将会采用一种更好的方案。

通过修改SecurityConfiguration 类,我们看一下Spring Security 允许实现什么功能:@Configuration

@EnableGlobalMethodSecurity(securedEnabled = true)

public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

@Autowired

public void configureAuth(AuthenticationManagerBuilder auth)

throws Exception {

auth.inMemoryAuthentication().withUser("user").password("user")

.roles("USER").and().withUser("admin").password("admin")

.roles("USER", "ADMIN");

}

@Override

protected void configure(HttpSecurity http) throws Exception {

http.httpBasic().and().csrf().disable().authorizeRequests()

.antMatchers("/login", "/logout").permitAll()

.antMatchers(HttpMethod.GET, "/api/**").hasRole("USER")

.antMatchers(HttpMethod.POST, "/api/**").hasRole("ADMIN")

.antMatchers(HttpMethod.PUT, "/api/**").hasRole("ADMIN")

.antMatchers(HttpMethod.DELETE, "/api/**").hasRole("ADMIN")

.anyRequest().authenticated();

}

}

在前面的示例代码中,我们使用Spring Security 流畅的API,配置了应用程序的安全策略。

这个 API 通过调用相关安全功能的方法,能够在全局上配置Spring Security,这些方法可以通过and()连接起来。

我们刚刚定义的是一个基本认证,没有CSRF 保护功能。任何用户都允许发送针对“/login”和“/logout”的请求。对API 的GET 请求只允许具有USER 角色的用户访问,而对API 的POST、PUT 和DELETE 请求则只允许具有ADMIN 角色的用户访问。最后,对其他内容的访问则要求用户进行过认证,不管角色是什么,都可以进行访问。

CSRF 所代表的含义是跨站请求伪造(Cross Site Request Forgery),指的是一种攻击形式,恶意的Web 站点将会在他们的网站上展示一个表单,但是会将表单的数据POST 提交到我们的站点上。如果我们站点的用户没有退出的话,那么POST 请求能够获取用户的cookie,这样的话,就会被认为是认证过的用户。

针对 CSRF 的防护会生成短期存活的token,它会随着表单数据一起进行提交。我们会在下面的章节看到如何启用该功能,现在我们先将其禁用。参考http://docs.spring.io/spring-security/site/docs/current/ reference/htmlsingle/#csrf 来了解更多细节。

tips:如果想了解针对API 请求进行认证的更多知识,可以参考:http://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/#authorize-requests。

java url 授权,Spring MVC框架 - 基本认证之URL 授权认证相关推荐

  1. 从零开始学java 框架_从零开始学 Java - 搭建 Spring MVC 框架

    如果创建一个 Spring 项目 Spring MVC 框架在 Java 的 Web 项目中应该是无人不知的吧,你不会搭建一个 Spring 框架?作为身为一个刚刚学习Java的我都会,如果你不会的话 ...

  2. 【Java学习路线之JavaWeb】Spring MVC框架入门教程

    文章目录 读者 阅读条件 MVC设计模式简介 JSP+JavaBean Servlet+JSP+JavaBean MVC优缺点 优点 缺点 Spring MVC是什么 Spring MVC优点 第一个 ...

  3. Java Spring MVC框架 VII

    Java Spring MVC框架 VII Spring MVC小结 1.小结 ● 关于Spring MVC框架,你应该(1/5): – 理解Spring MVC框架的作用 – 接收请求,响应结果,处 ...

  4. Java Spring MVC框架 VIII 之 Spring MVC拦截器

    Java Spring MVC框架 VIII 之 Spring MVC拦截器 Spring MVC拦截器 1.拦截器简介 拦截器是SpringMvc框架提供的功能 它可以在控制器方法运行之前或运行之后 ...

  5. Java中级篇——Spring MVC 是什么(附加响应状态代码列举)

    1.关于springMVC 基于Spring框架,主要解决后端服务器接受客户端服务器接受客户提交的请求,并给予响应相关的问题.的框架 目录 1.关于springMVC 基于Spring框架,主要解决后 ...

  6. 搭建基于spring MVC框架 + RESTful架构风格技术总结

    2019独角兽企业重金招聘Python工程师标准>>> 实战篇: 在SpringMVC框架中搭建RESTful架构风格来完成客户端与服务器端的低耦合度.可扩展性.高并发与大数据流量的 ...

  7. java地址映射关系,Spring MVC——基础(简介,使用,地址映射)

    "大佬们"嘴中的SSH,SSM框架,我这种小白终于解除到第二个S了,关于Spring MVC框架,根据最近的学习发现,还是有很多不足和需要加强巩固的地方,所以,通过总结博客的方式将 ...

  8. 从 0 开始手写一个 Spring MVC 框架,向高手进阶

    转载自   从 0 开始手写一个 Spring MVC 框架,向高手进阶 Spring框架对于Java后端程序员来说再熟悉不过了,以前只知道它用的反射实现的,但了解之后才知道有很多巧妙的设计在里面.如 ...

  9. springmvc流程_基于Spring MVC框架的Http流程分析

    一.问题提出 我们可以方便的利用Spring MVC进行业务开发,请求的大部分工作都被框架和容器封装,使得我们只需要做很少量的工作.但是整个http请求流程是怎么样的?Spring MVC框架在其中起 ...

最新文章

  1. java框架篇---spring IOC依赖注入
  2. 推荐: 五分钟搞懂Xen、KVM、Qemu间的关系和区别[转载]
  3. 「C++」C++ Primer Plus 笔记:第十七章 输入、输出和文件
  4. 苹果的程序员三大定律
  5. typeof 和instanceof
  6. vue rule鼠标移走校验_Vue-cli+Element-ui实现后台管理系统(二)实现后台登录功能...
  7. 读取pcap获得端口_渗透技巧——获得Exchange GlobalAddressList的方法
  8. SqlBulkCopy转载
  9. 跨国际日期分界线的解决方法
  10. Jenkins+Git+Maven+Nexus+Tomcat
  11. python flask 路由_python框架flask入门之路由及简单实现方法
  12. API之实用工具Postman 使用方法
  13. t450加固态硬盘教程_ThinkPad T450 开箱安装内存SSD升级Windows10过程小记-5X兴趣社区...
  14. android 音视频录制
  15. 佳能2900打印机与win10不兼容_佳能LBP2900 64位驱动下载|佳能LBP2900打印机64位驱动支持Win10/Win7 下载_当游网...
  16. VBA中启动其它程序
  17. ​如何成为一个成功的自由程序员?
  18. python向excel写数据_Python 往Excel写数据
  19. 侯捷C++八部曲笔记(四、C++2.0新特性)
  20. DAY SIX -- ospf的不规则区域问题和链路状态通告LSA

热门文章

  1. Spring For All 顶级Spring综合社区服务平台
  2. PostgreSQL学习手册(二) 模式(Schema)
  3. [转载]vs2008下安装boost
  4. 导致View树遍历的时机
  5. 大数据与Hadoop
  6. 深入理解InnoDB(6)—独立表空间
  7. leetcode1509. 三次操作后最大值与最小值的最小差
  8. 数据库sql课程设计_SQL和数据库-初学者完整课程
  9. pmp 成本估算准确高_如何更准确地估算JavaScript中文章的阅读时间
  10. mysql 数据库 安全_如何确保您MySQL数据库安全