2019独角兽企业重金招聘Python工程师标准>>>

一.

<%@ taglib prefix="sec"uri="http://www.springframework.org/security/tags"%>
<%
<input type="hidden" value="<sec:authentication property="principal.username" />">
<!--购物车表单-->

以上代码是在购物车中,用了spring的安全模块里的标签语句。

二.报错:

org.springframework.beans.NotReadablePropertyException: Invalid property 'principal.username' of bean class [org.springframework.security.authentication.AnonymousAuthenticationToken]: Bean property 'principal.username' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?

三.分析日志报告是安全模块的principal.username不可用。

于是做如下调试:

<!--<input type="hidden" value="<sec:authentication property="principal.username" />">  -->

把该标签语句在jsp中注释掉,重启服务器,发现还是报相同的错误。

接下来,删除该input标签,重启服务器,不报错了,恢复正常。

后来分析发现,<sec:authentication property="principal.username" />只有在用户登录了(即在spring安全模块中用户已通过认证),才能用,这里要配合其他标签语句一起用,检测用户是否登录。

四.调整

<!-- 用户登录后才显示如下代码 ,开始--><sec:authorize access="isAuthenticated()"><input type="hidden"value="<sec:authentication property="principal.username" />"></sec:authorize><!-- 用户登录后才显示如下代码,结束 -->

五.总结

1.调试代码要注意jsp中的HTML注释  <!-- 注释内容 --> 在编译时可见,即里面的内容如果有错误,编译器还是会报错,所以调试时直接删除才行,不然还是会有编译错误。

<!-- this is an html comment.it will show up int the response. -->JSP页注释(隐藏注释):指注释虽然写在JSP程序中,但不会发送给客户,因此在客户端查看源代码时不能看见注释。这样的注释在JSP编译时被忽略掉。<%--this is a JSP comment.it will only be seen in jsp code--%>Java注释:只能出现在Java代码区中,不允许直接出现在页面中。//单行注释   /*多行注释*/

转载于:https://my.oschina.net/Cubicluo/blog/830940

spring 安全模块在jsp中误用引起的问题相关推荐

  1. 详解JSP 中Spring工作原理及其作用

    详解JSP 中Spring工作原理及其作用 1.springmvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作. 2.Dispat ...

  2. Spring MVC 在JSP中获取 Service或Dao

    Spring MVC 在JSP中获取service 在Controller.Service层都已经配置好了自动注入,但是在JSP中直接使用 IuserInfoShService uishService ...

  3. spring学习12 -Spring 框架模块以及面试常见问题注解等

    以下为spring常见面试问题: 1.Spring 框架中都用到了哪些设计模式? Spring框架中使用到了大量的设计模式,下面列举了比较有代表性的: 代理模式-在AOP和remoting中被用的比较 ...

  4. 在Spring MVC Web应用程序中添加社交登录:单元测试

    Spring Social 1.0具有spring-social-test模块,该模块为测试Connect实现和API绑定提供支持. 该模块已从Spring Social 1.1.0中删除,并由 Sp ...

  5. Spring Boot整合Shiro + JSP教程(用户认证,权限管理,图片验证码)

    在此首先感谢**编程不良人**up主提供的视频教程 代码都是跟着up的视频敲的,遇到的一些问题也是通过CSDN博主提供的教程解决的,在此也感谢那些提供bug解决方案的前辈们~ 项目完整代码已经发布到g ...

  6. 什么是spring?spring组成模块、spring优缺点、应用场景、bean的生命周期、线程并发问题

    什么是spring 在不同的语境中,Spring 所代表的含义是不同的.下面我们就分别从"广义"和"狭义"两个角度,对 Spring 进行介绍. 广义的 Spr ...

  7. JSP中的EL表达式详细介绍

    2019独角兽企业重金招聘Python工程师标准>>> 一.JSP EL语言定义 EL 提供了在 JSP 脚本编制元素范围外使用运行时表达式的功能.脚本编制元素是指页面中能够用于在 ...

  8. 避免在JSP中写java代码

    作者:蜗牛学院CTO李懿老师 ​自从十年前的taglibs(如JSTL)和EL(表达语言,这些事情)诞生以来,在JSP中使用scriptlet(<% %>这些东西)的确是非常不鼓励的. 小 ...

  9. spring内容协商管理_Spring框架中的内容协商

    spring内容协商管理 1.简介 使用BeanNameViewResolver完成的工作就是,我们刚刚在Spring上下文中创建了多个bean视图以生成预期的输出. Spring很快引入了内容协商策 ...

最新文章

  1. 【数学基础】校招算法工程师笔试题
  2. 基数估算HyperLogLog
  3. ((ios开发学习笔记五))手动创建Tab Bar Controller 程序
  4. ways to keep health
  5. Hyperledger Fabric 词汇表
  6. 转载:Java编程风格与命名规范整理
  7. python基础技巧总结(四)
  8. win32开发(自定义消息)
  9. 如何在 Windows XP Service Pack 2 上启用 SQL Server 连接
  10. 8000401a 因为配置标志不正确 错误及解决办法
  11. 正确打开db文件的方式,避免乱码和无意义内容
  12. 边缘计算以及kubeedge概念的通俗解释
  13. 场内场外交易成本_场内基金与场外基金交易手续费是多少?怎么算?
  14. html5给文字添加拼音,h5 给汉字加拼音 加进度条
  15. 彻底解决 gcr、quay、DockerHub 镜像下载难题
  16. MySQL数据库的基本管理操作
  17. Arturia CZ V(音频合成器)v1.0.0.2695官方版
  18. 2019年风险投资人 ( VCPE ) 汇总
  19. Adobe软件试用下载
  20. python中重采样的时间间隔与等距,resample,periods

热门文章

  1. idea overlays文件夹_Intellij IDEA 文件修改提示星号
  2. gdb java,调用gdb来调试java程序
  3. 3.1 Ext JS 组件总览
  4. python调用metasploit自动攻击_Python脚本与Metasploit交互进行自动永恒之蓝攻击-Go语言中文社区...
  5. xor(线性基的合并)
  6. mysql中sysdate(),curdate(),curtime(),now()
  7. 数学分析闭区间套定理_不能精确找到背驰点?利用区间套解决这难题
  8. js ---- 数组操作
  9. php隔行符,PHP PHP_EOL 换行符
  10. 把url地址复制到粘贴板上_写个简单的python爬虫爬取堆糖上漂亮的小姐姐