spring 安全模块在jsp中误用引起的问题
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中误用引起的问题相关推荐
- 详解JSP 中Spring工作原理及其作用
详解JSP 中Spring工作原理及其作用 1.springmvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作. 2.Dispat ...
- Spring MVC 在JSP中获取 Service或Dao
Spring MVC 在JSP中获取service 在Controller.Service层都已经配置好了自动注入,但是在JSP中直接使用 IuserInfoShService uishService ...
- spring学习12 -Spring 框架模块以及面试常见问题注解等
以下为spring常见面试问题: 1.Spring 框架中都用到了哪些设计模式? Spring框架中使用到了大量的设计模式,下面列举了比较有代表性的: 代理模式-在AOP和remoting中被用的比较 ...
- 在Spring MVC Web应用程序中添加社交登录:单元测试
Spring Social 1.0具有spring-social-test模块,该模块为测试Connect实现和API绑定提供支持. 该模块已从Spring Social 1.1.0中删除,并由 Sp ...
- Spring Boot整合Shiro + JSP教程(用户认证,权限管理,图片验证码)
在此首先感谢**编程不良人**up主提供的视频教程 代码都是跟着up的视频敲的,遇到的一些问题也是通过CSDN博主提供的教程解决的,在此也感谢那些提供bug解决方案的前辈们~ 项目完整代码已经发布到g ...
- 什么是spring?spring组成模块、spring优缺点、应用场景、bean的生命周期、线程并发问题
什么是spring 在不同的语境中,Spring 所代表的含义是不同的.下面我们就分别从"广义"和"狭义"两个角度,对 Spring 进行介绍. 广义的 Spr ...
- JSP中的EL表达式详细介绍
2019独角兽企业重金招聘Python工程师标准>>> 一.JSP EL语言定义 EL 提供了在 JSP 脚本编制元素范围外使用运行时表达式的功能.脚本编制元素是指页面中能够用于在 ...
- 避免在JSP中写java代码
作者:蜗牛学院CTO李懿老师 自从十年前的taglibs(如JSTL)和EL(表达语言,这些事情)诞生以来,在JSP中使用scriptlet(<% %>这些东西)的确是非常不鼓励的. 小 ...
- spring内容协商管理_Spring框架中的内容协商
spring内容协商管理 1.简介 使用BeanNameViewResolver完成的工作就是,我们刚刚在Spring上下文中创建了多个bean视图以生成预期的输出. Spring很快引入了内容协商策 ...
最新文章
- 【数学基础】校招算法工程师笔试题
- 基数估算HyperLogLog
- ((ios开发学习笔记五))手动创建Tab Bar Controller 程序
- ways to keep health
- Hyperledger Fabric 词汇表
- 转载:Java编程风格与命名规范整理
- python基础技巧总结(四)
- win32开发(自定义消息)
- 如何在 Windows XP Service Pack 2 上启用 SQL Server 连接
- 8000401a 因为配置标志不正确 错误及解决办法
- 正确打开db文件的方式,避免乱码和无意义内容
- 边缘计算以及kubeedge概念的通俗解释
- 场内场外交易成本_场内基金与场外基金交易手续费是多少?怎么算?
- html5给文字添加拼音,h5 给汉字加拼音 加进度条
- 彻底解决 gcr、quay、DockerHub 镜像下载难题
- MySQL数据库的基本管理操作
- Arturia CZ V(音频合成器)v1.0.0.2695官方版
- 2019年风险投资人 ( VCPE ) 汇总
- Adobe软件试用下载
- python中重采样的时间间隔与等距,resample,periods
热门文章
- idea overlays文件夹_Intellij IDEA 文件修改提示星号
- gdb java,调用gdb来调试java程序
- 3.1 Ext JS 组件总览
- python调用metasploit自动攻击_Python脚本与Metasploit交互进行自动永恒之蓝攻击-Go语言中文社区...
- xor(线性基的合并)
- mysql中sysdate(),curdate(),curtime(),now()
- 数学分析闭区间套定理_不能精确找到背驰点?利用区间套解决这难题
- js ---- 数组操作
- php隔行符,PHP PHP_EOL 换行符
- 把url地址复制到粘贴板上_写个简单的python爬虫爬取堆糖上漂亮的小姐姐