日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

35.使用拦截器实现权限验证

發布時間:2023/12/9 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 35.使用拦截器实现权限验证 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html

為了說明此問題,我們建立struts2auth項目,流程圖如下:

簡短說明:當我們訪問main.jsp頁面,并試圖通過此頁面中的鏈接地址:note.action來訪問到.../WEB-INF/note.jsp頁面時,由于訪問的note.action配置了攔截器,所以會被攔截,如果攔截器判斷登錄則可以訪問,否則會跳到登錄頁面。如果我們從登錄頁面直接到main.jsp頁面,再來訪問note.action時,同樣被攔截但是由于登錄過,所以可以訪問到此action對應的內容。由這里的分析可以看出關鍵點就登錄成功時給出標志提供給攔截器判斷是否成功登錄。
步驟一,搭建好相關的開發環境,并準備好登錄頁面login.jsp,代碼如下:
<form action="<%=request.getContextPath()%>/login.action" method="post">

????????????? 姓名:<input type="text" name="username"><br>

????????????? 密碼:<input type="password" name="password"><br>

????????????? <input type="submit" value="登錄">

</form>
步驟二,建立相應的Action:LoginAction。代碼如下:
package com.asm;

public class LoginAction extends ActionSupport {

?????? private String username;

?????? Map session;

?????? public String execute() throws Exception {

????????????? if(username.equals("admin")){

???????????????????? session = ActionContext.getContext().getSession();

???????????????????? session.put("loginSign", "loginSuccess");

???????????????????? return SUCCESS;

????????????? }else{

???????????????????? return LOGIN;

????????????? }

}
...省略username的get/set方法

}

說明:我們這里是設定了只有登錄用戶名為admin時,此Action才設置登錄標志。另這里獲取Session對象采取的是“與Servlet解耦合的非IOC方式”。
步驟三,編寫攔截器類,代碼如下:
package com.asm.interceptor;

public class AuthInterceptor extends AbstractInterceptor {

?????? public String intercept(ActionInvocation invocation) throws Exception {

????????????? Map session = invocation.getInvocationContext().getSession();

????????????? // session=ActionContext.getContext().getSession();

????????????? if (session.get("loginSign") == null) {

???????????????????? return "login";

????????????? } else {

???????????????????? String result = invocation.invoke();

???????????????????? return result;

????????????? }

?????? }

}

步驟四,配置此Action相關,主要配置內容如下:
<struts>

?????? <package name="tokenTest" extends="struts-default">

????????????? <interceptors>

???????????????????? <interceptor name="auth"

??????????????????????????? class="com.asm.interceptor.AuthInterceptor">

???????????????????? </interceptor>

???????????????????? <interceptor-stack name="authStack">

??????????????????????????? <interceptor-ref name="auth"></interceptor-ref>

??????????????????????????? <interceptor-ref name="defaultStack"></interceptor-ref>

???????????????????? </interceptor-stack>

????????????? </interceptors>

????????????? <action name="login" class="com.asm.LoginAction">

???????????????????? <result name="success">/main.jsp</result>

???????????????????? <result name="login">/login.jsp</result>

????????????? </action>

?

????????????? <action name="note">

???????????????????? <result>/WEB-INF/note.jsp</result>

???????????????????? <result name="login">/login.jsp</result>

???????????????????? <interceptor-ref name="authStack"></interceptor-ref>

????????????? </action>

?????? </package>

</struts>

說明:結合前面的一些代碼來看,當我們為note.action配置了前面寫所的AuthInterceptor攔截器時,如果我們要訪問note.action,攔截器會首先判斷是否登錄,如果登錄則繼續把請求傳遞下去,如果沒有登錄則會返回到登錄頁面。
步驟五、編寫相關的其它jsp頁面,然后發布測試。此實例應重點是進一步掌握攔截器的配置使用。作為“實現資源權限訪問”,此實例不具參考價值。

轉載于:https://www.cnblogs.com/sharpest/p/5587636.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的35.使用拦截器实现权限验证的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。