下面叙述如何将(1)里面xml配置的固定的用户采用数据库形式,这样比较接近日常项目。
(1)中spring-security.xml authentication-manager的配置
<sec:authentication-manager> <sec:authentication-provider> <sec:user-service> <sec:user name="admin" password="admin" authorities="ROLE_USER, ROLE_ADMIN"/> <sec:user name="jack" password="jack" authorities="ROLE_USER" /> </sec:user-service> </sec:authentication-provider> </sec:authentication-manager>
用户是固定配置的。
将authentication-manager 修改下
<sec:authentication-manager> <sec:authentication-provider> <sec:password-encoder hash="md5"></sec:password-encoder> <sec:jdbc-user-service data-source-ref="dataSource" users-by-username-query="select name,pwd,status from user where name=?" authorities-by-username-query="select u.name,a.authority from user u left join authorities a on u.id=a.user_id where u.name=?"/> </sec:authentication-provider> </sec:authentication-manager>
如上配置两段sql即返回出jdbc-user-service需要的信息就能完成注册认证
ps: 关于spring mvc中静态资源的过滤问题可以如下配置,使用sever自带的default filter进行过滤而不是通过spring-mvc进行过滤,当然还有几种配置方式
a.使用Default filter
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.js</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping>