⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 accessinterceptor.java

📁 这是一个法律事务所系统源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			    sb.append(methods[j]).append(" ");		    sb.append(transport).append(" ");		    if( roles!=null)			for( int j=0; j< roles.length; j++ )			    sb.append( roles[j]).append(" ");		    log( sb.toString());		}		// roles will be checked by a different interceptor		if( roles!= null  && roles.length > 0) 		    req.setRequiredRoles( roles );		if( transport != null &&		    ! "NONE".equals( transport )) {		    req.setNote( reqTransportNote, transport );		    // check INTEGRAL or CONFIDENTIAL		    if( "INTEGRAL".equalsIgnoreCase( transport ) ||			"CONFIDENTIAL".equalsIgnoreCase( transport )) {			if( debug>0) log( "Transport " + transport + " " + req.isSecure());			if( ! req.isSecure() ) {				return 403;			}		    }		}			    }	} 	return 0;    }    /** Find if a pattern is matched by a container     */    boolean match( Container ct, String path, String method ) {	String ctPath=ct.getPath();	int ctPathL=ctPath.length();	String ctMethods[]=ct.getMethods();		if( ctMethods != null && ctMethods.length > 0 ) {	    boolean ok=false;	    for( int i=0; i< ctMethods.length; i++ ) {		if( method.equals( ctMethods[i] ) ) {		    ok=true;		    break;		}	    }	    if( ! ok ) return false; // no method matched	}	// either method is any or we matched the method		switch( ct.getMapType() ) {	case Container.PREFIX_MAP:	    return path.startsWith( ctPath.substring(0, ctPathL - 2  ));	case Container.EXTENSION_MAP:	    return ctPath.substring( 1 ).equals( URLUtil.getExtension( path ));	case Container.PATH_MAP:	    return path.equals( ctPath );	}	return false;    }    // -------------------- Implementation methods --------------------}class SecurityConstraints {    Container []securityPatterns;    int patterns=0;    // implement re-sizeable array later    static final int MAX_CONSTRAINTS=30;    public SecurityConstraints() {	securityPatterns=new Container[MAX_CONSTRAINTS];    }    // It's called in a single thread anyway    public synchronized void addContainer(Container ct) {	securityPatterns[ patterns ]= ct;	patterns++;    }}class BasicAuthHandler extends ServletWrapper {        BasicAuthHandler() {	initialized=true;	internal=true;	name="tomcat.basicAuthHandler";    }    public void doService(Request req, Response res)	throws Exception    {	Context ctx=req.getContext();	String realm=ctx.getRealmName();	if(realm==null) realm="default";	res.setStatus( 401 );	res.setHeader( "WWW-Authenticate",		       "Basic realm=\"" + realm + "\"");    }}/** 403 - Forbiden.    This handler will report that the page can't be accessed without    SSL.*/class SSLRequiredHandler extends ServletWrapper {        SSLRequiredHandler() {	initialized=true;	internal=true;	name="tomcat.sslRequiredHandler";    }    public void doService(Request req, Response res)	throws Exception    {	Context ctx=req.getContext();	ContextManager cm=ctx.getContextManager();		int secureP=cm.getSecurePort();	if( secureP <= 0 ) {	    // 403 - this page requires SSL and we don't	    // know any way to get there	    res.setStatus( 403 );	    StringBuffer body=new StringBuffer();	    body.append("<h1>SSL required to access this page</H1>");	    	    res.setContentLength(body.length());	    if( res.isUsingStream() ) {		ServletOutputStream out = res.getOutputStream();		out.print(body.toString());		out.flush();	    } else {		PrintWriter out = res.getWriter();		out.print(body);		out.flush();	    }	} else {	    StringBuffer securePage=new StringBuffer();	    securePage.append("https://").append(req.getServerName());	    securePage.append( ":" ).append(secureP );	    // same context page, etc	    securePage.append( req.getRequestURI());	    String qS=req.getQueryString();	    if( qS!=null) {		securePage.append( "?").append( qS );	    }	    req.setAttribute("javax.servlet.error.message",			     securePage.toString() );	    contextM.handleStatus( req, res, 302 ); // redirect	    return;	}    }}/** 401 - access denied. Will check if we have an authenticated user    or not.    XXX If we have user/pass, but still no permission  - display    error page.*/class FormAuthHandler extends ServletWrapper {        FormAuthHandler() {	initialized=true;	internal=true;	name="tomcat.formAuthHandler";    }    public void doService(Request req, Response res)	throws Exception    {	Context ctx=req.getContext();	HttpSession session=req.getSession( false );	if( session == null ) {	}		String page=ctx.getFormLoginPage();	String errorPage=ctx.getFormErrorPage();	// assert errorPage!=null ( AccessInterceptor will check	// that and enable form login only if everything is ok	session=req.getSession( true );	String username=(String)session.getAttribute( "j_username" );	if( debug>0) log( "Username = " + username);	if( username != null ) {	    // 401 with existing j_username - that means wrong credentials.	    // Next time we'll have a fresh start	    session.removeAttribute( "j_username");	    session.removeAttribute( "j_password");	    req.setAttribute("javax.servlet.error.message",			     errorPage );	    contextM.handleStatus( req, res, 302 ); // redirect	    return;	}    String originalLocation = req.getRequestURI();	if (req.getQueryString() != null)	    originalLocation += "?" + req.getQueryString(); 	session.setAttribute( "tomcat.auth.originalLocation",			      originalLocation);	if( debug > 0 )	    log("Redirect1: " + page  + " originalUri=" + req.getRequestURI());	req.setAttribute("javax.servlet.error.message",			 page );	contextM.handleStatus( req, res, 302 ); // redirect	return;     }}/**     j_security_check handler    This is called after the user POST the form login page.*/class FormSecurityCheckHandler extends ServletWrapper {        FormSecurityCheckHandler() {	initialized=true;	internal=true;	name="tomcat.formSecurityCheck";    }    /** Will set the j_username and j_password attributes	in the session, and redirect to the original	location.	No need to validate user/pass and display error page	if wrong user/pass. Will be done by normal 401 handler,	if user/pass are wrong.    */    public void doService(Request req, Response res)	throws Exception    {	String username=req.getParameter( "j_username" );	String password=req.getParameter( "j_password" );	Context ctx=req.getContext();	String errorPage=ctx.getFormErrorPage();	// assert errorPage!=null ( AccessInterceptor will check	// that and enable form login only if everything is ok		if( debug > 0 )	    log( " user/pass= " + username + " " + password );	    	HttpSession session=req.getSession( false );	if( session == null ) {	    ctx.log("From login without a session ");	    req.setAttribute("javax.servlet.error.message",			     errorPage );	    contextM.handleStatus( req, res, 302 ); // redirect	    return;	}	session.setAttribute( "j_username", username );	session.setAttribute( "j_password", password );	    	String origLocation=(String)session.	    getAttribute( "tomcat.auth.originalLocation");	if( debug > 0)	    log("Redirect2: " + origLocation);		req.setAttribute("javax.servlet.error.message",			 origLocation );	contextM.handleStatus( req, res, 302 ); // redirect    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -