導航:首頁 > 凈水問答 > cas伺服器過濾器配置

cas伺服器過濾器配置

發布時間:2021-12-11 16:41:57

㈠ 伺服器端跳轉 過濾器不執行

過濾器過濾的是請求,你的請求沒變,自然不會過濾。

㈡ cas服務端可以在訪問login之前,訪問其他方法么

業務系統web應用在使用單點登錄組件時,有些請求路徑不需要單點登錄過濾器攔截,比如公共開放的路徑,不需要認證都可以自由訪問的路徑,單點登錄過濾器配置的映射路徑一般以通配符匹配路徑,但要把這些路徑單獨提取出來,讓過濾器不攔截做單點登錄處理,就需要對原有過濾器進行擴展改造,才能實現這個功能。

擴展實現代碼如下:

public class CASFilter implements Filter {

public static enum ResponseType {
BREAK, GOON, RETURN
}

...

public void doFilter(
ServletRequest request,
ServletResponse response,
FilterChain fc){

。。。

CASReceipt receipt = (CASReceipt) session.getAttribute(CAS_FILTER_RECEIPT);

if (receipt != null && isReceiptAcceptable(receipt)) {
log.trace("CAS_FILTER_RECEIPT attribute was present and acceptable - passing request through filter..");
fc.doFilter(request, response);
return;
}else{
responeType = beforeDoSSOFilter(request, response);
if(ResponseType.RETURN==responeType){
return ;
}else if(ResponseType.BREAK==responeType) {
fc.doFilter(request, response);
return;
} //else go on
}

}

//過濾器的前置處理

public ResponseType beforeDoSSOFilter(ServletRequest request,
ServletResponse response) {
return ResponseType.GOON;

}

}

註:主要看原CASFilter 類紅字部分擴展代碼。

擴展實現類BMCASFilter

package com.sitechasia.sso.bmext;

public class BMCASFilter extends CASFilter {
private final Log log = LogFactory.getLog(this.getClass());
private static String ssoclient_passedPathSet;//設置不被sso過濾器攔截的請求路徑,需要符合url路徑通配符,多個路徑可以","分割
public static final String PASSEDPATHSET_INIT_PARAM="passedPathSet";//web.xml配置文件中的參數
@Override
public void init(FilterConfig config) throws ServletException {
super.init(config);
ssoclient_passedPathSet = SSOClientPropertiesSingleton.getInstance().getProperty(ClientConstants.SSOCLIENT_PASSEDPATHSET)==null?config.getInitParameter(PASSEDPATHSET_INIT_PARAM):SSOClientPropertiesSingleton.getInstance().getProperty(ClientConstants.SSOCLIENT_PASSEDPATHSET);
}

@Override
public ResponseType beforeDoSSOFilter(ServletRequest request,
ServletResponse response) {
if (ssoclient_passedPathSet != null) {//路徑過濾
HttpServletRequest httpRequest =(HttpServletRequest)request;
String requestPath = httpRequest.getRequestURI();
// String ls_requestPath = UrlUtils.buildFullRequestUrl(httpRequest.getScheme(), httpRequest.getServerName(), httpRequest.getServerPort(), requestPath, null);

PathMatcher matcher = new AntPathMatcher();
String passedPaths[]=null;
passedPaths =ssoclient_passedPathSet.split(",");

if(passedPaths!=null){
boolean flag;
for (String passedPath : passedPaths) {
flag = matcher.match(passedPath, requestPath);//ls_requestPath
if(flag){
log.info("sso client request path '"+requestPath+"'is matched,filter chain will be continued.");
return ResponseType.BREAK;
}
}
}
}
return ResponseType.GOON;
}

}

web.xml文件中配置修改如下:

單點登陸請求過濾器
CASFilter
com.sitechasia.sso.dmext.filter.DMCASFilter

...

排除路徑
passedPathSet

/**/restful/userLogin/findPassword,
/**/restful/userLogin/findIllegalLoginCount,
/**/restful/tenantManager/**,
/**/restful/lock/**,
/**/restful/export/**

CASFilter
/index.jsp
/filter-mapping>

。。。

註:紅字部分為相應配置內容擴展部分

經過上述這樣擴展,配置的排除路徑作為請求時,單點登錄過濾攔截就會忽略處理,實現了目標功能要求。

㈢ 過濾器<filter>配置的位置

在WEB-INF下面的web.xml裡面配置。例如:
<filter>
<filter-name>projectFilter</filter-name>
<filter-class>com.bruce.filter.ProjectFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>projectFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>

㈣ 如何配置Filter過濾器處理JSP中文亂碼

注意問題:在學慣用selvert的過濾器filter處理中文亂碼時,在filter配置初始化時用了utf-8處理中文亂碼,而在提交的jsp頁面中卻用了gbk。雖然兩種都可以出來中文亂碼,但是卻造成了處理亂碼的格式不一致。所以編譯出錯。
解決方法:所有地方都用utf-8或gbk

//過濾器類
CharactorFilter.jsp
package cn.com.Filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class CharactorFilter implements Filter { //繼承Filter類
//字元編碼
String encoding=null;
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if(encoding!=null){
//設置request字元編碼
request.setCharacterEncoding(encoding);
//設置response字元編碼
response.setContentType("text/html;charset="+encoding);
}
//傳遞給下一個過濾器
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
//獲取初始化參數
encoding=filterConfig.getInitParameter("encoding");
}
public void destroy() {
// TODO Auto-generated method stub
encoding=null;
}
}

web.xml
<filter> <!--注意這里是filter,不要配置成servlet-->
<filter-name>CharactorFilter</filter-name> <!--過濾器名稱-->
<filter-class>cn.com.Filter.CharactorFilter</filter-class> <!--過濾器的完整類名-->
<init-param> <!--初始化參數-->
<param-name>encoding</param-name> <!--參數名稱-->
<param-value>utf-8</param-value> <!--參數值-->
</init-param>
</filter>
<filter-mapping> <!--過濾器映射-->
<filter-name>CharactorFilter</filter-name><!--過濾器名稱-->
<url-pattern>/*</url-pattern><!--URL映射,給所有頁面處理亂碼-->
</filter-mapping>

㈤ JAVA的伺服器過濾器(encodingFilter)有啥用說的通俗一點,用與不用啥區別百度上

Filter 過濾器 ,通過Filter技術,你可以在用戶訪問某個目標資源之前,對訪問的請求進行攔版截。在Filter中做一些權你自己的業務處理。encodingFilter 是一個對編碼進行統一處理的過濾,對請求和響應設置 你預先在xml配置的固定編碼。

用與不用的區別

用了,你在xml配置中過濾的訪問都會預先設置編碼格式,這樣更加方便全局處理。
不用,你在某些資源出現編碼問題時,手動設置一下編碼,效果一樣

㈥ Struts2入口過濾器配置

本人試驗了一下配置成*.action index.jsp是可行的,不過一般情況下是配置成/*的 然後結合版struts.properties文件裡面的struts.action.extension(定義擴權展名,例如.do,.action等等,多個擴展名中間用逗號隔開)值使用,樓主你最好檢查下你的伺服器啟動日誌 看看項目是否正常啟動。

㈦ cas有些請求路徑不需要單點登錄過濾器攔截

業務系統web應用在使用單點登錄組件時,有些請求路徑不需要單點登錄過濾器攔截,比如公共開放的路徑,不需要認證都可以自由訪問的路徑,單點登錄過濾器配置的映射路徑一般以通配符匹配路徑,但要把這些路徑單獨提取出來,讓過濾器不攔截做單點登錄處理,就需要對原有過濾器進行擴展改造,才能實現這個功能。

擴展實現代碼如下:

public class CASFilter implements Filter {

public static enum ResponseType {
BREAK, GOON, RETURN
}

...

public void doFilter(
ServletRequest request,
ServletResponse response,
FilterChain fc){

。。。

CASReceipt receipt = (CASReceipt) session.getAttribute(CAS_FILTER_RECEIPT);

if (receipt != null && isReceiptAcceptable(receipt)) {
log.trace("CAS_FILTER_RECEIPT attribute was present and acceptable - passing request through filter..");
fc.doFilter(request, response);
return;
}else{
responeType = beforeDoSSOFilter(request, response);
if(ResponseType.RETURN==responeType){
return ;
}else if(ResponseType.BREAK==responeType) {
fc.doFilter(request, response);
return;
} //else go on
}

}

//過濾器的前置處理

public ResponseType beforeDoSSOFilter(ServletRequest request,
ServletResponse response) {
return ResponseType.GOON;

}

}

註:主要看原CASFilter 類紅字部分擴展代碼。

擴展實現類BMCASFilter

package com.sitechasia.sso.bmext;

public class BMCASFilter extends CASFilter {
private final Log log = LogFactory.getLog(this.getClass());
private static String ssoclient_passedPathSet;//設置不被sso過濾器攔截的請求路徑,需要符合url路徑通配符,多個路徑可以","分割
public static final String PASSEDPATHSET_INIT_PARAM="passedPathSet";//web.xml配置文件中的參數
@Override
public void init(FilterConfig config) throws ServletException {
super.init(config);
ssoclient_passedPathSet = SSOClientPropertiesSingleton.getInstance().getProperty(ClientConstants.SSOCLIENT_PASSEDPATHSET)==null?config.getInitParameter(PASSEDPATHSET_INIT_PARAM):SSOClientPropertiesSingleton.getInstance().getProperty(ClientConstants.SSOCLIENT_PASSEDPATHSET);
}

@Override
public ResponseType beforeDoSSOFilter(ServletRequest request,
ServletResponse response) {
if (ssoclient_passedPathSet != null) {//路徑過濾
HttpServletRequest httpRequest =(HttpServletRequest)request;
String requestPath = httpRequest.getRequestURI();
// String ls_requestPath = UrlUtils.buildFullRequestUrl(httpRequest.getScheme(), httpRequest.getServerName(), httpRequest.getServerPort(), requestPath, null);

PathMatcher matcher = new AntPathMatcher();
String passedPaths[]=null;
passedPaths =ssoclient_passedPathSet.split(",");

if(passedPaths!=null){
boolean flag;
for (String passedPath : passedPaths) {
flag = matcher.match(passedPath, requestPath);//ls_requestPath
if(flag){
log.info("sso client request path '"+requestPath+"'is matched,filter chain will be continued.");
return ResponseType.BREAK;
}
}
}
}
return ResponseType.GOON;
}

}

web.xml文件中配置修改如下:

<filter>
<description>單點登陸請求過濾器</description>
<filter-name>CASFilter</filter-name>
<filter-class>com.sitechasia.sso.dmext.filter.DMCASFilter</filter-class>

...

<init-param>
<description>排除路徑</description>
<param-name>passedPathSet</param-name>
<param-value>
/**/restful/userLogin/findPassword,
/**/restful/userLogin/findIllegalLoginCount,
/**/restful/tenantManager/**,
/**/restful/lock/**,
/**/restful/export/**
</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>CASFilter</filter-name>
<url-pattern>/index.jsp</url-pattern>
< /filter-mapping>

。。。

註:紅字部分為相應配置內容擴展部分

經過上述這樣擴展,配置的排除路徑作為請求時,單點登錄過濾攔截就會忽略處理,實現了目標功能要求。

㈧ filter的使用 java 過濾器的幾種使用方法

過濾器來

過濾器是處於客戶端自與伺服器資源文件之間的一道過濾網,在訪問資源文件之前,通過一系列的過濾器對請求進行修改、判斷等,把不符合規則的請求在中途攔截或修改。也可以對響應進行過濾,攔截或修改響應。

過濾器一般用於登錄許可權驗證、資源訪問許可權控制、敏感詞彙過濾、字元編碼轉換等等操作,便於代碼重用,不必每個servlet中還要進行相應的操作。

㈨ supersocket不通過配置文件如何配置連接過濾器

在配置文件中啟用連接過濾器需要注意兩點:
1) 在SuperSocket配置節點中增加connectionFilters子節點,然後添加你新增的connection filter的相應的配置到connectionFilters到節點之中。
2) 在伺服器實例節點中增加connectionFilters屬性,屬性值為你想為該伺服器實例啟用的connection filter的名稱,多個connection filter用逗號隔開。
完成上面的配置,然後啟動SuperSocket,你的連接過濾器就生效了。

㈩ 配置了CAS過濾器之後Struts2的過濾器失效了

http://www.2cto.com/Article/201310/250927.html

閱讀全文

與cas伺服器過濾器配置相關的資料

熱點內容
液相用溶劑過濾器 瀏覽:674
納濾水導電率 瀏覽:128
反滲透每小時2噸 瀏覽:162
做一個純凈水工廠需要多少錢 瀏覽:381
最終幻想4回憶技能有什麼用 瀏覽:487
污水提升器采通 瀏覽:397
反滲透和不發滲透凈水器有什麼區別 瀏覽:757
提升泵的揚程 瀏覽:294
澤德提升泵合肥經銷商 瀏覽:929
飲水機後蓋漏水了怎麼辦 瀏覽:953
小型電動提升器 瀏覽:246
半透膜和細胞膜區別 瀏覽:187
廢水拖把池 瀏覽:859
十四五期間城鎮污水處理如何提質增效 瀏覽:915
怎麼測試空氣凈化器的好壞 瀏覽:519
提升泵是幹嘛的 瀏覽:744
布油做蒸餾起沫咋辦 瀏覽:252
廣州工業油煙凈化器一般多少錢 瀏覽:204
喜哆哆空氣凈化器效果怎麼樣 瀏覽:424
油煙凈化器油盒在什麼位置 瀏覽:582