spring安全框架应用
程序员文章站
2022-07-12 08:41:15
...
第一步
将spring-security-core-2.0.3.jar和spring-security-taglibs-2.0.3.jar包加入工程,修改原有的jsp代码,将登录的验证放到action中处理,更改index.jsp的form提交的action代码。
文件路径:ezg2.7\WebRoot\index.jsp
Html代码
第二步
新建TAB_MOA_MODULE表的hibernate映射文件和pojo文件,映射文件加入hibernate配置文件
文件路径:
ezg2.7\src\com\srt\sdp\security\model\TabMoaModule.hbm.xml
ezg2.7\src\com\srt\sdp\security\model\TabMoaModule.java
ezg2.7\src\conf\hibernate.cfg.xml
Xml代码
第三步
修改资源DAO对象,从TAB_MOA_MODULE表获取资源。修改映射文件,加入sql语句
文件路径:
ezg2.7\src\com\srt\sdp\security\dao\hibernate\ResourceDao.java
ezg2.7\src\com\srt\sdp\security\model\TabMoaModule.hbm.xml
Xml代码
第四步
修改安全框架初始化加载资源的代码,将权限code和url放入spring安全框架
文件路径:ezg2.7\src\com\srt\sdp\security\bean\ResourceDetailsService.java
第五步
在spring配置文件中配置sec:authentication-provider节点,用自己的类实现spring的验证接口,要在此类中加载登陆用户的权限。
文件路径:
ezg2.7\src\conf\applicationContext-security.xml
ezg2.7\src\com\srt\sdp\security\bean\UserDetailsService.java
第四步
在调用了spring接口之后,将请求转交给原有的登录action处理
第五步
对安全框架进行改造,继承spring的权限拦截器AbstractSecurityInterceptor,初始化ObjectDefinitionSource对象,为安全验证提供权限资源。并将此拦截器加入安全框架拦截器链中。
第六步
自定义决策者,根据用户权限进行逻辑判断,决定用户是否能访问相应资源。这部分的资料可以参考[url]http://www.360doc.com/content/10/0903/18/2560742_50955108.shtml [/url]
将spring-security-core-2.0.3.jar和spring-security-taglibs-2.0.3.jar包加入工程,修改原有的jsp代码,将登录的验证放到action中处理,更改index.jsp的form提交的action代码。
文件路径:ezg2.7\WebRoot\index.jsp
Html代码
<!--<form name="loginActionForm" id="loginActionForm" method="post" action="[color=red]login.do[/color]" target="_parent" onsubmit="return login()">--> <form name="loginActionForm" id="loginActionForm" method="post" action="[color=red]j_spring_security_check[/color]"" target="_parent" onsubmit="return login()"> <!--<form name="loginActionForm" id="loginActionForm" method="post" action="[color=red]login.do[/color]" target="_parent" onsubmit="return login()">--> <form name="loginActionForm" id="loginActionForm" method="post" action="[color=red]j_spring_security_check[/color]"" target="_parent" onsubmit="return login()">
第二步
新建TAB_MOA_MODULE表的hibernate映射文件和pojo文件,映射文件加入hibernate配置文件
文件路径:
ezg2.7\src\com\srt\sdp\security\model\TabMoaModule.hbm.xml
ezg2.7\src\com\srt\sdp\security\model\TabMoaModule.java
ezg2.7\src\conf\hibernate.cfg.xml
Xml代码
<mapping resource="com/srt/sdp/security/model/TabMoaModule.hbm.xml" /> <mapping resource="com/srt/sdp/security/model/TabMoaModule.hbm.xml" />
第三步
修改资源DAO对象,从TAB_MOA_MODULE表获取资源。修改映射文件,加入sql语句
文件路径:
ezg2.7\src\com\srt\sdp\security\dao\hibernate\ResourceDao.java
ezg2.7\src\com\srt\sdp\security\model\TabMoaModule.hbm.xml
Xml代码
<query name="getResources"> <![CDATA[FROM TabMoaModule]> </query> <query name="getResources"> <![CDATA[FROM TabMoaModule]> </query>
public List<TabMoaModule> getResources() { return getSession().getNamedQuery("getResources").list();//123 } public List<TabMoaModule> getResources() { return getSession().getNamedQuery("getResources").list();//123 }
第四步
修改安全框架初始化加载资源的代码,将权限code和url放入spring安全框架
文件路径:ezg2.7\src\com\srt\sdp\security\bean\ResourceDetailsService.java
List<TabMoaModule> resources = resourceDao.getResources(); for (TabMoaModule resource : resources) { String authorityCode = resource.getPerm_code(); List<String> urlList = new ArrayList<String>(); // 读取资源里面的url if (resource.getModuleUrl() != null) { urlList.add(resource.getModuleUrl()); } for (String url : urlList) { if(!requestMap.containsKey(url)){ requestMap.put(url, authorityCode); } } } List<TabMoaModule> resources = resourceDao.getResources(); for (TabMoaModule resource : resources) { String authorityCode = resource.getPerm_code(); List<String> urlList = new ArrayList<String>(); // 读取资源里面的url if (resource.getModuleUrl() != null) { urlList.add(resource.getModuleUrl()); } for (String url : urlList) { if(!requestMap.containsKey(url)){ requestMap.put(url, authorityCode); } } }
第五步
在spring配置文件中配置sec:authentication-provider节点,用自己的类实现spring的验证接口,要在此类中加载登陆用户的权限。
文件路径:
ezg2.7\src\conf\applicationContext-security.xml
ezg2.7\src\com\srt\sdp\security\bean\UserDetailsService.java
<bean id="userDetailsService" class="com.srt.sdp.security.bean.UserDetailsService"/> <bean id="userDetailsService" class="com.srt.sdp.security.bean.UserDetailsService"/>
第四步
在调用了spring接口之后,将请求转交给原有的登录action处理
第五步
对安全框架进行改造,继承spring的权限拦截器AbstractSecurityInterceptor,初始化ObjectDefinitionSource对象,为安全验证提供权限资源。并将此拦截器加入安全框架拦截器链中。
第六步
自定义决策者,根据用户权限进行逻辑判断,决定用户是否能访问相应资源。这部分的资料可以参考[url]http://www.360doc.com/content/10/0903/18/2560742_50955108.shtml [/url]
上一篇: 搜索二维矩阵-数组74-python
下一篇: 最大子段和-动态规划
推荐阅读
-
Spring Boot应用发布到Docker的实现
-
详解Spring框架下向异步线程传递HttpServletRequest参数的坑
-
Spring Boot使用过滤器和拦截器分别实现REST接口简易安全认证示例代码详解
-
详解spring boot应用启动原理分析
-
详解spring-boot集成elasticsearch及其简单应用
-
iOS10语音识别框架SpeechFramework应用详解
-
iOS10通知框架UserNotification理解与应用
-
Spring自带的校验框架Validation的使用实例
-
Spring Boot Web应用程序配置详解
-
使用Spring Boot创建Web应用程序的示例代码