最近学习了SSH,越发觉得权限管理的重要性,上网看了一下权限管理框架,大致有Apache Shiro和Spring Security比较出名,因为刚学习了Spring,所以就选择Spring Security吧,上官网把jar包下载下来,运行了一下spring-security-samples-tutorial示例程序,感觉配置好难呀。上网搜索了一下Spring Security相关的文章,折腾了一下,没有跑通一个程序,感觉入门还是比较困难的,一上来就是相关概念头都大了。没办法,对照参考文档一步一步摸索吧。
先做一个最简单的应用,二个页面:index.html和admin.html,分别代表具有ROLE_USER和ROLE_ADMIN权限的人可以访问的页面,当然具有ROLE_ADMIN权限的用户两个页面都可以访问了。
首先新建web应用程序,导入tutorial实例程序下WEB-INF/lib下所有的jar文件,并将logbak.xml文件拷贝到src文件夹下。
1.修改web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext-security.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
原理很简单:listener用来加载配置文件,filter用来过滤所有访问请求。
2.新建applicationContext-security.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd">
<debug />
<http auto-config="true">
<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN"/>
<intercept-url pattern="/**" access="ROLE_USER"/>
</http>
<authentication-manager>
<authentication-provider>
<user-service>
<user name="admin" password="admin" authorities="ROLE_USER, ROLE_ADMIN" />
<user name="user" password="user" authorities="ROLE_USER" />
</user-service>
</authentication-provider>
</authentication-manager>
</beans:beans>
监听http请求,intercept-url中的权限要按照由细到粗的顺序排列,Spring Security从上到下匹配规则,符合条件即完成授权,若果上面两个intercept调换位置,任意请求都满足/**,则用户只要具有ROLE_USER权限则可以访问所有资源,包括/admin.jsp了。
<authentication-manager>中定义了两个用户,权限之间用逗号隔开。
3.新建index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>欢迎页面</title>
</head>
<body>
<h2>这是首页</h2>
<a href="admin.jsp">进入admin页面</a>
</body>
</html>
4.新建admin.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
</head>
<body>
<h2>管理员页面</h2>
</body>
</html>
好了,大功告成,运行代码看一下吧。Spring Security自动为我们添加了登录页面,还是挺简单的。就到这里吧,虽然好多标签不知道什么意思,权限管理的相关概念也不清楚,慢慢摸索吧。高手路过请轻拍,谢谢啦。
分享到:
相关推荐
最近自学Spring Security,这里是我做的练习所产生的代码(SSM+Spring Security)包括一些注释等。
Spring_Security-3.0.1_中文自学教程
《JavaWeb整合开发完全自学手册》主要介绍Struts、Hibernate、Spring、Eclipse的基础知识,如何整合这4个开源框架进行J2EE开发,如何基于MyEclipseIDE进行开发,J2EE开发的基础和基础环境搭配,Struts、Hibernate、...
spring入门的所有代码,可以运行。配合写的文章学习,应该蛮不错的,我自学用的,啊哈哈哈~~有什么问题留言,感觉有帮助的可以点个赞在走哦。
Spring5自学讲义
Spring Security 4.1 电子扫描版,仅供学习使用。
弹簧样品 Spring 自学示例项目
很好自学spring和hibernate的资源
spring3.0mvc自学教程ppt+注解教程+注解实例+springmybatis教程+项目实例+中文api 初学(自学)着的不二法定,从入门到项目实例深入学习(浅-深)
自学Spring所产生的代码,包含IOC、AOP的入门以及进阶,Spring与数据库(MySQL)的交互。(该资源不仅包含我写的代码,一切Spring、aspect、jdbc等所需jar包都俱全,项目导入就能跑起来)
spring揭秘自学用 王福强 高清版
自学文档 适用于初学者 内附经典案例并有详细的操作步骤
前几日自几看spring3.0就这么简单这本书时候留下来的东西,可见本身会有些许问题,但是笔者本身是小白,所以只是更基础适合新手,大神自动略过。ppt
Spring_MVC_3.0快速自学实战指南
在自学Spring Framework 开发参考手册2.5时做的学习笔记,其中在遇到手册上不能理解的地方的时候,在网上找了一些比较好的文档也放在了里面。
Mybatis 最小依赖jar 不集成spring 联系版本,适合初学者自己写个小demo
自学java的同行们应该都知道或者听说过狂神,人如其名!本人在学习java的时候也是看的狂神视频,确实讲的不错,系统的讲述了spring的使用。...最后一个小小的提醒:关注博主不迷路,感谢大家厚爱(手动比心心)
java自学之路java自学之路java自学之路java自学之路java自学之路java自学之路java自学之路java自学之路java自学之路java自学之路java自学之路java自学之路
如果你打算自己琢磨学习spring,并要做些例子的话!应该能给您带来帮助