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

📄 authfilter.java

📁 很棒的web服务器源代码
💻 JAVA
字号:
// AuthFilter.java// $Id: AuthFilter.java,v 1.17 2000/08/16 21:37:34 ylafon Exp $// (c) COPYRIGHT MIT and INRIA, 1996.// Please first read the full copyright statement in file COPYRIGHT.htmlpackage org.w3c.jigsaw.auth ;import org.w3c.tools.resources.Attribute;import org.w3c.tools.resources.AttributeHolder;import org.w3c.tools.resources.AttributeRegistry;import org.w3c.tools.resources.BooleanAttribute;import org.w3c.tools.resources.LookupResult;import org.w3c.tools.resources.LookupState;import org.w3c.tools.resources.ProtocolException;import org.w3c.tools.resources.ReplyInterface;import org.w3c.tools.resources.RequestInterface;import org.w3c.tools.resources.Resource;import org.w3c.tools.resources.ResourceFilter;import org.w3c.tools.resources.StringArrayAttribute;import org.w3c.tools.resources.StringAttribute;import org.w3c.jigsaw.http.HTTPException;import org.w3c.jigsaw.http.Reply;import org.w3c.jigsaw.http.Request;import org.w3c.www.http.HTTP;import org.w3c.www.http.HttpReplyMessage;import org.w3c.www.http.HttpRequestMessage;import org.w3c.tools.resources.ProtocolException;/** * General authentication filters. */public class AuthFilter extends ResourceFilter {    /**     * The user as authentified from the request.     * FIXME     */    public static final     String STATE_AUTHUSER = "org.w3c.jigsaw.auth.AuthFilter.user";    /**     * The authentication method used to authenticate above user.     * FIXME     */    public static final    String STATE_AUTHTYPE = "org.w3c.jigsaw.auth.AuthFilter.type";    /**     * The authentication context used to authenticate the above user     * FIXME     */    public static final    String STATE_AUTHCONTEXT = "org.w3c.jigsaw.auth.AuthFilter.context";    /**     * Attribute index - The methods protected by the filter.     */    protected static int ATTR_METHODS = -1 ;    /**     * Attribute index - The realm name for this filter.     */    protected static int ATTR_REALM = -1;    /**     * Attribute index - Is caching allowed by a shared cache ?     */    protected static int ATTR_SHARED_CACHABILITY = -1;    /**     * Attribute index - Is caching allowed in private cache ?     */    protected static int ATTR_PRIVATE_CACHABILITY = -1;    /**     * Attribute index - Is public caching of protected documents allowed ?     */    protected static int ATTR_PUBLIC_CACHABILITY = -1;    static {	Attribute a   = null ;	Class     c = null ;	try {	    c = Class.forName("org.w3c.jigsaw.auth.AuthFilter");	} catch (Exception ex) {	    ex.printStackTrace() ;	    System.exit(1) ;	}	// The protected methods	a = new StringArrayAttribute("methods"				     , null				     , Attribute.EDITABLE) ;	ATTR_METHODS = AttributeRegistry.registerAttribute(c, a) ;	// The realm name (to be resolved by the RealmFactory).	a = new StringAttribute("realm"				, null				, Attribute.EDITABLE|Attribute.MANDATORY);	ATTR_REALM = AttributeRegistry.registerAttribute(c, a) ;	// Can protected documents be saved in shared cache ?	a = new BooleanAttribute("shared-cachability"				 , Boolean.FALSE				 , Attribute.EDITABLE);	ATTR_SHARED_CACHABILITY = AttributeRegistry.registerAttribute(c, a);	// Can protected documents be shared in private cache ?	a = new BooleanAttribute("private-cachability"				 , Boolean.FALSE				 , Attribute.EDITABLE);	ATTR_PRIVATE_CACHABILITY = AttributeRegistry.registerAttribute(c, a);	// Can protected documents be publicly cached ?	a = new BooleanAttribute("public-cachability"				 , Boolean.FALSE				 , Attribute.EDITABLE);	ATTR_PUBLIC_CACHABILITY = AttributeRegistry.registerAttribute(c, a);    }    /**     * Get the list of methods that this filter protect     * @return An array of String giving the name of the protected methods,     *    or <strong>null</strong>, in wich case <em>all</em> methods are     *    to be protected.     */    public String[] getMethods() {	return (String[]) getValue(ATTR_METHODS, null) ;    }    /**     * Get the realm of this filter.     */    public String getRealm() {	return (String) getValue(ATTR_REALM, null) ;    }    /**     * Is this document publicly cachable ?     * @return A boolean.     */    public boolean getPublicCachability() {	return getBoolean(ATTR_PUBLIC_CACHABILITY, false);    }    /**     * Is this document cachable in private caches ?     * @return A boolean.     */    public boolean getPrivateCachability() {	return getBoolean(ATTR_PRIVATE_CACHABILITY, false);    }    /**     * Is this document cachable in shared caches ?     * @return A boolean.     */    public boolean getSharedCachability() {	return getBoolean(ATTR_SHARED_CACHABILITY, false);    }    /**     * Authenticate the request from the given client.     * An authentication filter should only override this method.     * @param request The request to be handled.     * @exception ProtocolException If authentication failed.     */    public void authenticate (Request request) 	throws ProtocolException    {	Reply error = request.makeReply(HTTP.UNAUTHORIZED) ;	error.setContent ("<p>Invalid server configuration</p>"			  + "<p>The server defines an authentication filter "			  + " with no <strong>authenticate</strong> method.");	throw new HTTPException (error) ;    }    /**     * Authenticate the given request for the given client.      * This method is invoked prior to any request handling on its target     * entity. If the used authentication method allows so, AuthFilters      * should set the <strong>authuser</strong> attribute of the request.     * @param request The request.     * @exception ProtocolException If authentication failed.     */    public boolean lookup(LookupState ls, LookupResult lr)        throws ProtocolException    {	Request request  = 	  (Request) (ls.hasRequest() ? ls.getRequest() : null);	if ((request == null) || ls.isInternal())	    // Internal lookups always allowed	    return false;	// Check the request, and authenticate if needed:	String method    = request.getMethod() ;	String methods[] = getMethods() ;	if ( methods == null ) {	    authenticate(request) ;	    return false;	} else {	    for (int i = 0 ; i < methods.length ; i++) {		if ( methods[i].equalsIgnoreCase (method) ) {		    authenticate(request) ;		    return false;		}	    }	}	return false;    }    /**     * Add the appropriate cache control directives on the way back.     * @param request The request that has been processed.     * @param reply The original reply.     * @return Always <strong>null</strong>.     */    public ReplyInterface outgoingFilter(RequestInterface request,					 ReplyInterface reply)     {      Reply rep = (Reply) reply;	if ( getPrivateCachability() ) {	    rep.setMustRevalidate(true);	} else if ( getSharedCachability() ) {	    rep.setProxyRevalidate(true);	} else if ( getPublicCachability() ) {	    rep.setPublic(true);	}	return null;    }}

⌨️ 快捷键说明

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