第一個Acegi 程式 - 表單網頁

本文介绍如何使用Acegi安全框架设置登录页面,包括表单设计、参数配置及错误处理等内容。
<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script> 完成了 第一個Acegi 程式 - 設定文件 中的文件設定,接下來完成必要的表單網頁,首先是/acegilogin.jsp:
  • 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
  • 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:
  • index.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/下的資源,看看結果如何。
MATLAB主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性内容概要:本文主要介绍了一种在MATLAB环境下实现的主动噪声和振动控制算法,该算法针对较大的次级路径变化具有较强的鲁棒性。文中详细阐述了算法的设计原理与实现方法,重点解决了传统控制系统中因次级路径动态变化导致性能下降的问题。通过引入自适应机制和鲁棒控制策略,提升了系统在复杂环境下的稳定性和控制精度,适用于需要高精度噪声与振动抑制的实际工程场景。此外,文档还列举了多个MATLAB仿真实例及相关科研技术服务内容,涵盖信号处理、智能优化、机器学习等多个交叉领域。; 适合人群:具备一定MATLAB编程基础和控制系统理论知识的科研人员及工程技术人员,尤其适合从事噪声与振动控制、信号处理、自动化等相关领域的研究生和工程师。; 使用场景及目标:①应用于汽车、航空航天、精密仪器等对噪声和振动敏感的工业领域;②用于提升现有主动控制系统对参数变化的适应能力;③为相关科研项目提供算法验证与仿真平台支持; 阅读建议:建议读者结合提供的MATLAB代码进行仿真实验,深入理解算法在不同次级路径条件下的响应特性,并可通过调整控制参数进一步探究其鲁棒性边界。同时可参考文档中列出的相关技术案例拓展应用场景。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值