昨天完成了基本的配置用的是框架自带的页面。
这一节,实现自己写的页面之间的权限管理。
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页面打转。