SpringSecurity学习之路1

项目结构:

 自上而下分别为:

①父模块,主要负责项目管理、版本控制;

②后期为springSecurity加入手机验证登录等功能时使用;

③面向浏览器所做的配置,如集群中session的处理;

④security核心文件都在这里存放;

⑤具体业务。引入了③的配置,刚开始学,先从面向浏览器③开始。

在引入了相关依赖和插件之后,在⑤中写一个hello spring security:

此时在地址栏输入:localhost:8080/hello之后,会弹出spring security的安全验证界面。因为是刚开始学,先关闭这个安全验证窗口,后续随着深入学习后在开启。在resources目录下创建application.properties文件,加上下行代码:

 这时再重新启动后输入地址便可正常访问了。至此,hello spring security变写完了。

接下来看什么是Restful编程,因为后续的学习中都会使用到Restful风格来编写代码,所以在这里简要介绍下:

我们为了查询数据库中的某条用户数据,传统的URL会这样写:localhost:8080/user/queryUser?userID=1。Restful风格:localhost:8080/user/1。这样看上去是不是比较清秀?眉清目秀......你可能会问,在地址栏中你只传入了一个数字1,那我怎么知道你是想查询一个userID为1的用户呢,还是想从数据库中删除一个userID为1的用户呢?很好。我们知道,请求方法有很多种,比如get、post、put等,采用Restful风格,用URL来描述资源,而不是行为。将根据请求方式的不同来判别具体目的是啥。

 先简单知道这些就足够了。接着看一个查询请求。目录结构如下:

User bean声明了username和password字段,UserController中处理请求,代码如下:

 先不要管被注释掉的@JsonView注解,下面会介绍到。可以看到这是很简单的一个controller,下面我们编写测试方法:

 测试执行成功后,输出到控制台的数据为:

上半部分是controller里输出的url请求时的参数信息。

最后一行是测试方法中输出的controller方法返回值信息。可以看到,我们在controller里向List集合中添加了三个对象,并且这三个对象中的属性都为空,符合我们在测试方法中的预期结果。测试正确。

 

接下来将要介绍到的有:@PathVariable注解、@JsonView注解与URL正则表达式访问控制。

先看@PathVariable注解。这个注解在Restful风格中应该是很常见的,具体使用如下:

 测试方法的编写:

 在本测试方法中,我们通过GET方式请求路径为“/user/1”的资源,并期望返回值中包含username为kevin的属性。通过前面的介绍我们知道,GET用于发送查询请求。所以在这里,我们就是想要查询userID为1的用户信息。当请求路径为“/user/2”时,就是查询userID为2的用户信息,这就是注解@PathVariable的作用。这很好的体现了Restful设计风格(它并不是一种约束)。

 

接下来介绍通过正则表达式来控制对URL的访问。我们知道,例如手机号、年龄等信息,都是数字形式,我们并不希望接收到非预期信息。在以下代码中,接收的ID必须为数字:

此时如果访问“localhost:8080/user/a”,则会抛出404错误。这只是一个简单的正则表达式,你可以利用更复杂的正则表达式来自定义控制。 

 

最后介绍@JsonView注解。这个注解很有意思,它可以根据视图来决定哪些信息是可以返回至前端,哪些信息是被拦截不能返回到前端页面的。

要想使用@JsonView注解功能,分三步走:

①:在bean中声明视图接口,我是在User bean中声明的。

②:在字段的get方法上指定视图名。

③:在controller的方法上指定要渲染的视图。

 分别执行测试方法,得到的测试结果如下,可以很明显的看出第一个测试执行后只返回了username信息,而第二个测试执行后则返回了username、age的信息。

第一个测试结果:[{"username":null},{"username":null},{"username":null}]
第二个测试结果:{"username":"kevin","age":null}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值