loginmessageinterceptor.java
来自「java 和flex的整合,主要是spring和flex的整合,不可多得啊」· Java 代码 · 共 84 行
JAVA
84 行
/* * Copyright 2002-2009 the original author or authors. * * Licensed 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.springframework.flex.security;import java.util.HashMap;import java.util.Map;import org.springframework.flex.core.MessageInterceptor;import org.springframework.flex.core.MessageProcessingContext;import org.springframework.security.Authentication;import org.springframework.security.GrantedAuthority;import org.springframework.security.context.SecurityContextHolder;import flex.messaging.messages.CommandMessage;import flex.messaging.messages.Message;/** * {@link MessageInterceptor} implementation that replaces the standard login success message with one that contains * relevant information about the logged in user. * * <p> * The body of the returned message will contain the following properties as obtained from the {@link Authentication} * object: * <ul> * <li>name - the "name" property from the authentication</li> * <li>authorities - an array of String representations of the authentication's authorities (i.e. obtained through * {@link GrantedAuthority#getAuthority})</li> * <ul> * * @author Jeremy Grelle */public class LoginMessageInterceptor implements MessageInterceptor { private static final String SUCCESS_MSG = "success"; /** * * {@inheritDoc} */ public Message postProcess(MessageProcessingContext context, Message inputMessage, Message outputMessage) { if (inputMessage instanceof CommandMessage && ((CommandMessage) inputMessage).getOperation() == CommandMessage.LOGIN_OPERATION) { if (SUCCESS_MSG.equals(outputMessage.getBody())) { outputMessage.setBody(getAuthenticationResult()); } } return outputMessage; } /** * * {@inheritDoc} */ public Message preProcess(MessageProcessingContext context, Message inputMessage) { return inputMessage; } private Map<String, Object> getAuthenticationResult() { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); Map<String, Object> authenticationResult = new HashMap<String, Object>(); authenticationResult.put("name", authentication.getName()); String[] authorities = new String[authentication.getAuthorities().length]; for (int i = 0; i < authorities.length; i++) { authorities[i] = authentication.getAuthorities()[i].getAuthority(); } authenticationResult.put("authorities", authorities); return authenticationResult; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?