昨天完成了基本的配置用的是框架自带的页面。
这一节,实现自己写的页面之间的权限管理。
1.创建一个login.html文件,一个error.html文件,一个index.html文件 放在webapp目录下。
1.2写一个简单的登录窗口,login.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>欢迎登录!!!</title> </head> <body> <form action="/login" method="post"> 用户名<input type="text" name="username"> </br> 密码<input type="password" name="password"> </br> <input type="submit" value="登录"> </form> </body> </html>
1.3 error.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>error页面</title> </head> <body> <h1> 欢迎来到error</h1> </body> </html>
1.4 index.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>index页面</title> </head> <body> <h1> 欢迎来到index</h1> </body> </html>
2. 在spring-security.xml中添加配置
2.1 放行初始的页面
2.2修改登录和跳转页面
2.3 设置csrf,这鬼是什么东西我也不太明白。
整个的xml文件如下
<?xml version="1.0" encoding="UTF-8"?> <bean:beans xmlns="http://www.springframework.org/schema/security" xmlns:bean="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.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd"> <!-- 放行一些不需要拦截的窗口页 --> <http pattern="/login.html" security="none"></http> <http pattern="/error.html" security="none"></http> <http pattern="/*.ico" security="none"></http> <http> <intercept-url pattern="/*" access="hasRole('ROLE_USER')" /> <!-- 1.设置默认登录的login页面,2.设置登录成功后的默认跳转页,3.设置权限验证失败后的跳转页面 --> <form-login login-page="/login.html" default-target-url="/index.html" authentication-failure-url="/error.html"/> <!-- 设置跨域不拦截 --> <csrf disabled="true"/> </http> <!-- 认证管理器 --> <authentication-manager> <authentication-provider> <user-service> <user authorities="ROLE_USER" name="admin" password="admin" /> </user-service> </authentication-provider> </authentication-manager> </bean:beans>
3. 效果如下
3.1 输入正确的用户名和密码,跳转到index页面
3.2再输入一个错误的用户名或密码,跳转到了错误的页面
4 总结。
4.1 在添加跳转路径的时候要注意不要忘记“/” ,
不然会出现如下错误。
4.2 另外在login的表单提交方式上,要设置method属性,可以是post也可以是get。但是如果没有这个属性,就一直不能跳转,一直在login页面打转。