下面为您讲解Spring Security表单登录功能的实现方法:
1. 配置Spring Security
在pom文件中添加依赖:
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>{spring-security-version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>{spring-security-version}</version>
</dependency>
在Spring配置文件中,添加以下配置:
<http pattern="/login" security="none" />
<http use-expressions="true">
<intercept-url pattern="/" access="permitAll" />
<intercept-url pattern="/index" access="hasRole('USER')" />
<intercept-url pattern="/admin" access="hasRole('ADMIN')" />
<form-login login-page="/login" default-target-url="/" authentication-failure-url="/login?error" />
<logout logout-success-url="/" />
</http>
<authentication-manager>
<authentication-provider>
<user-service>
<user name="user" password="{noop}password" authorities="ROLE_USER" />
<user name="admin" password="{noop}password" authorities="ROLE_ADMIN" />
</user-service>
</authentication-provider>
</authentication-manager>
其中:
<http>
元素,用于配置访问权限,指定访问某些URL时需要令牌(Token),使用<intercept-url>
子元素指定需要保护的URL,<form-login>
子元素用于指定登录页面以及登录失败后的跳转页面,<logout>
子元素用于注销登录;<authentication-manager>
元素,用于配置身份认证机制,其中的<authentication-provider>
子元素用于指定身份认证信息来源,这里采用了<user-service>
元素指定了用户信息,并分别指定了User
和Admin
两个用户。
2. 创建登录页面
在Web应用程序中,创建登录页面login.jsp
:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Login Page</title>
</head>
<body>
<form action="j_spring_security_check" method="POST">
<label for="username">Username:</label>
<input type="text" id="username" name="j_username" />
<label for="password">Password:</label>
<input type="password" id="password" name="j_password" />
<input type="submit" value="Login" />
</form>
</body>
</html>
这里的action
属性指向Spring Security默认的登录处理URL,即/j_spring_security_check
,其中j_username
和j_password
是Spring Security默认的参数名。
3. 创建两个示例Controller
为了演示不同角色用户如何访问不同的页面,下面创建两个Controller。
用户Controller:
@Controller
public class UserController {
@GetMapping("/index")
public String index() {
return "index";
}
}
管理Controller:
@Controller
public class AdminController {
@GetMapping("/admin")
public String admin() {
return "admin";
}
}
其中UserController
的index()
方法用于返回用户首页,而AdminController
的admin()
方法用于返回管理员页面。
4. 运行程序并测试
接下来,运行程序,并通过浏览器访问http://localhost:8080/login
,将能看到登录页面。
在输入用户名和密码后点击登录,根据在配置文件中的设置,跳转到用户主页http://localhost:8080/index
或管理员主页http://localhost:8080/admin
。当用户没有登录或者已经登录但没有相应的权限访问某个页面时,将会被重定向到登录页面。
以上就是Spring Security表单登录功能的实现方法的攻略,希望对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Security 表单登录功能的实现方法 - Python技术站