完成了
第一個Acegi 程式 - 設定文件 中的文件設定,接下來完成必要的表單網頁,首先是/acegilogin.jsp:
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<html>
<head>
<title>Acegi 範例網頁 - 登入</title>
</head>
<body>
<h2>登入範例應用程式!</h2>
<br />
<form action="j_acegi_security_check" method="POST">
<table>
<tr>
<td>名稱:</td>
<td><input type='text' name='j_username' value=''></td>
</tr>
<tr>
<td>密碼:</td>
<td><input type='password' name='j_password'></td>
</tr>
<tr>
<td><input name="reset" type="reset"></td>
<td><input name="submit" type="submit"></td>
</tr>
</table>
</form>
</body>
</html>
主要注意到粗體字的部份,j_acegi_security_check為
第一個Acegi 程式 - 設定文件 中authenticationProcessingFilter的filterProcessesUrl屬性所設定的名稱,而驗證時發送的使用者名稱與密碼,要以j_username與j_password請求參數送出。
如果想要在登入失敗時顯示錯誤訊息,可以檢查param.login_error是否為空,例如結合JSTL的話:
<c:if test="${not empty param.login_error}">
<font color="red">使用者名稱或密碼錯誤,請重新登入!<BR>
</font>
</c:if>
您也許想顯示最後一次登入失敗的使用者名稱,這個訊息是儲存在session之中,可以使用AuthenticationProcessingFilter.ACEGI_SECURITY_LAST_USERNAME_KEY作為KEY來取得這個值,例如:
<%@ page import="org.acegisecurity.ui.webapp.AuthenticationProcessingFilter"%>
...
<input type='text' name='j_username'
<c:if test="${not empty param.login_error}">
value='<%= session.getAttribute(AuthenticationProcessingFilter.ACEGI_SECURITY_LAST_USERNAME_KEY) %>'
</c:if>
>
登入成功的話,可以顯示/WEB-INF/loginsuccess.jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@ page import="org.acegisecurity.ui.webapp.AuthenticationProcessingFilter"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登入成功</title>
</head>
<body>
<h1>歡迎 <%= session.getAttribute(AuthenticationProcessingFilter.ACEGI_SECURITY_LAST_USERNAME_KEY) %>
</h1>
</body>
</html>
接著,設置一個簡單的首頁,當使用者存取首頁時,直接轉頁至acegilogin.jsp:
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=acegilogin.jsp">
</head>
<body>
<p>載入中...</p>
</body>
</html>
現在您可以啟動您的應用程式了,嘗試直接存取acegilogin.jsp並登入,關閉瀏覽器並清除快取,再嘗試直接存取/protected/下的資源,看看結果如何。
分享到:
相关推荐
### 最新ACEGI2.0教程 #### 一、引言与基础知识 ##### 1.1 什么是Spring Security? Spring Security(曾用名Acegi Security System for Spring)为基于Spring框架构建的企业级应用提供强大而灵活的安全解决方案...
Acegi支持多种访问决策策略,如多数投票、第一个通过等,可以根据不同业务需求选择合适的策略。此外,还允许自定义访问决策器,实现更复杂的逻辑。 **5. 防火墙(Filter Security Interceptor)** Acegi的核心组件...
- 提供了一个简单的教程示例,帮助用户快速上手 Spring Security。 - **Contacts 示例** - 一个关于联系人管理系统的示例,展示了如何在实际应用中使用 Spring Security。 - **LDAP 示例** - 使用 LDAP(轻量级...
##### 3.2 创建第一个 Tapestry5 应用 - **使用 WAR 文件导入**:将下载的 WAR 文件导入到 Eclipse 或其他 IDE 中。 - **使用 Apache Maven**:使用 Maven 快速启动原型来创建 Tapestry 项目。 在完成上述步骤后,...
- 第一个数字代表主版本号,表示重大更新。 - 第二个数字代表次版本号,表示新功能添加。 - 第三个数字代表修订版本号,表示错误修复或小更新。 - `RELEASE`标记表示该版本已经正式发布。 ##### 1.4 获取Spring ...
- **web.xml 配置**:在 `web.xml` 文件中配置 Spring Security 的过滤器链,这是启动 Spring Security 的第一步。 - **最小的 `<http>` 配置**:使用 `<http>` 元素来定义 Web 应用的安全配置,例如登录页面、登录...
- **教程示例**:提供了一个简单的示例,展示了如何快速搭建一个带有安全性的Web应用程序。 - **联系人示例**:通过这个例子,可以了解如何在Spring MVC应用程序中实现用户管理和权限控制。 - **LDAP示例**:展示了...
在Spring Security的配置中,关键的第一步是在`web.xml`文件中定义一个名为`springSecurityFilterChain`的过滤器。这个过滤器是DelegatingFilterProxy类的实例,它将所有请求转发到Spring Security的过滤链。通过...
在本视频教程的第08讲中,我们将深入探讨如何构建和实现一个完整的权限管理系统。 首先,Spring框架是Java后端的核心组件,负责管理应用程序的各个组件,包括依赖注入(DI)和面向切面编程(AOP)。在权限系统中,...
在IT行业中,"USER-VALIDATION"这个主题通常指的是用户验证或者用户身份验证的...而"USER-VALIDATION-master"这个文件名可能指向的是一个关于用户验证的开源项目或教程,可能包含了实现上述概念的代码示例和详细文档。