用户权限和认证也是一个非常重要的机制,可以看到tomcat在manager环节是会弹出一个认证窗输入用户密码的,Dubbo、Druid也是采取相同的方式进行认证,这也吸引了我的注意,一直想知道是怎么实现,然后自己也整一个简单的实现。今天终于是搞定了,记录一下配置过程。
我使用的是Springmvc4.3.1发现使用spring-scurity需要引入另外两个jar包,注意版本和springmvc的版本是不一样的,最新的security已经到5.x了。
<!-- Spring Security -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>4.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>4.2.3.RELEASE</version>
</dependency>
引入上面两个之后,还需要配置spring-security.xml和web.xml中添加配置,
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:security="http://www.springframework.org/schema/security"
xmlns:p="http://www.springframework.org/schema/p" 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-4.3.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-4.2.xsd">
<!-- use-expressions:Spring 表达式语言配置访问控制 -->
<security:http auto-config="true" use-expressions="false">
<!-- 配置权限拦截,访问所有url,都需要用户登录,且拥有ROLE_USER权限 -->
<security:intercept-url pattern="/**" access="ROLE_USER" />
<security:http-basic />
</security:http>
<security:authentication-manager alias="authenticationManager">
<security:authentication-provider>
<!-- 配置默认用户,用户名:admin 密码:123456 拥有权限:ROLE_USER -->
<security:user-service>
<security:user name="admin" password="123456"
authorities="ROLE_USER" />
</security:user-service>
</security:authentication-provider>
</security:authentication-manager>
</beans>
在web.xml中添加
<!-- Loads Spring Security config file 这一步在springmvc中可以去掉
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:configs/spring-security.xml</param-value>
</context-param>
-->
<!-- Spring Security -->
<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>
在上面的web.xml中注释了一段xml文件,这里可以再spring-servlet.xml中添加上,
<import resource="classpath:configs/spring-security.xml" />
在spring-security.xml中有一句,<security:http-basic />
如果不加这一句,那么使用的就是默认的登录页,加入这一句后,就会如tomcat、druid、dubbo等方式的浏览器弹窗验证。OK~