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

📄 authenticatedwebapplication.java

📁 Wicket一个开发Java Web应用程序框架。它使得开发web应用程序变得容易而轻松。 Wicket利用一个POJO data beans组件使得它可以与任何持久层技术相结合。
💻 JAVA
字号:
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements.  See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License.  You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.apache.wicket.authentication;import java.lang.ref.WeakReference;import org.apache.wicket.Component;import org.apache.wicket.Page;import org.apache.wicket.Request;import org.apache.wicket.Response;import org.apache.wicket.RestartResponseAtInterceptPageException;import org.apache.wicket.Session;import org.apache.wicket.WicketRuntimeException;import org.apache.wicket.authorization.IUnauthorizedComponentInstantiationListener;import org.apache.wicket.authorization.UnauthorizedInstantiationException;import org.apache.wicket.authorization.strategies.role.IRoleCheckingStrategy;import org.apache.wicket.authorization.strategies.role.RoleAuthorizationStrategy;import org.apache.wicket.authorization.strategies.role.Roles;import org.apache.wicket.markup.html.WebPage;import org.apache.wicket.protocol.http.WebApplication;/** * A web application subclass that does role-based authentication. *  * @author Jonathan Locke */public abstract class AuthenticatedWebApplication extends WebApplication		implements			IRoleCheckingStrategy,			IUnauthorizedComponentInstantiationListener{	/** Subclass of authenticated web session to instantiate */	private final WeakReference<Class< ? extends AuthenticatedWebSession>> webSessionClassRef;	/**	 * Constructor	 */	public AuthenticatedWebApplication()	{		// Get web session class to instantiate		this.webSessionClassRef = new WeakReference<Class< ? extends AuthenticatedWebSession>>(				getWebSessionClass());	}	@Override	protected void init()	{		super.init();		// Set authorization strategy and unauthorized instantiation listener		getSecuritySettings().setAuthorizationStrategy(new RoleAuthorizationStrategy(this));		getSecuritySettings().setUnauthorizedComponentInstantiationListener(this);	}	/**	 * @see IRoleCheckingStrategy#hasAnyRole(Roles)	 */	public final boolean hasAnyRole(final Roles roles)	{		final Roles sessionRoles = AuthenticatedWebSession.get().getRoles();		return sessionRoles != null && sessionRoles.hasAnyRole(roles);	}	/**	 * @see IUnauthorizedComponentInstantiationListener#onUnauthorizedInstantiation(Component)	 */	public final void onUnauthorizedInstantiation(final Component component)	{		// If there is a sign in page class declared, and the unauthorized		// component is a page, but it's not the sign in page		if (component instanceof Page)		{			if (!AuthenticatedWebSession.get().isSignedIn())			{				// Redirect to intercept page to let the user sign in				throw new RestartResponseAtInterceptPageException(getSignInPageClass());			}			else			{				onUnauthorizedPage((Page)component);			}		}		else		{			// The component was not a page, so throw an exception			throw new UnauthorizedInstantiationException(component.getClass());		}	}	/**	 * @see org.apache.wicket.protocol.http.WebApplication#newSession(org.apache.wicket.Request,	 *      org.apache.wicket.Response)	 */	@Override	public Session newSession(final Request request, final Response response)	{		try		{			return webSessionClassRef.get().getDeclaredConstructor(					AuthenticatedWebApplication.class, Request.class).newInstance(					AuthenticatedWebApplication.this, request);		}		catch (Exception e)		{			throw new WicketRuntimeException("Unable to instantiate web session " +					webSessionClassRef.get(), e);		}	}	/**	 * @return AuthenticatedWebSession subclass to use in this authenticated web application.	 */	protected abstract Class< ? extends AuthenticatedWebSession> getWebSessionClass();	/**	 * @return Subclass of sign-in page	 */	protected abstract Class< ? extends WebPage> getSignInPageClass();	/**	 * Called when an AUTHENTICATED user tries to navigate to a page that they are not authorized to	 * access. You might want to override this to navigate to some explanatory page or to the	 * application's home page.	 * 	 * @param page	 *            The page	 */	protected void onUnauthorizedPage(final Page page)	{		// The component was not a page, so throw an exception		throw new UnauthorizedInstantiationException(page.getClass());	}}

⌨️ 快捷键说明

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