小编Les*_*ess的帖子

MVC拦截器与Spring安全过滤器vs其他东西......?

我在我的Web应用程序中使用Spring-MVC和Spring Security.它包括用户注册页面和私人用户面板.我现在设置了以下网址模式:

  • whatever/myapp/login 用户登录
  • whatever/myapp/register?step=1 开始注册
  • whatever/myapp/account/** 私人区域视图(页面)
  • whatever/myapp/pending 注册后流程完成后显示的视图
  • whatever/myapp/blocked 帐户被屏蔽的视图
  • whatever/myapp/register/retry 如果注册失败,请允许重试

基本上,下面的这些URL应该要求用户身份验证,即需要登录:

  • whatever/myapp/account/** (私人区域页面)
  • whatever/myapp/pending (此页面设置了一个定时器,可以重定向到/ account/home)
  • whatever/myapp/register/retry

使用Spring安全性非常简单.但是,无论通过Spring安全性进行用户身份验证,私有区域页面都应该是可访问的,具体取决于用户的当前帐户状态(存储在我的数据库中).

更具体地说:如果用户试图访问私有区域(/account/**)中的任何内容,则应根据状态向他显示相应的视图(重定向到适当的页面).我定义了这些状态:

  • suspended - 涉及待审视图
  • enabled - 允许完全访问
  • disabled - 这里不相关
  • retry_allowed- 涉及重试视图
  • blocked - 涉及帐户被阻止的视图

目前,我有一个MVC拦截器设置/account/**,它检查用户状态,并重定向到适当的页面,但不知何故,我感觉这不是真正理想或适当的解决方案,因为我面临奇怪的行为,如多个控制器调用...而且我不太确定何时返回true/ falsepreHandle()方法内.这是拦截器的代码片段:

@Override
public boolean preHandle(
    HttpServletRequest request, 
    HttpServletResponse response,
    Object arg2) 
    throws Exception {

IPanelUser pUser =  (IPanelUser) SecurityContextHolder.getContext()
        .getAuthentication().getPrincipal();

// check principal first and then load from DB
// "suspended" is …
Run Code Online (Sandbox Code Playgroud)

java spring-mvc filter spring-security interceptor

14
推荐指数
1
解决办法
1万
查看次数

Spring会话范围的bean作为原型bean中的依赖项?

我曾多次阅读关于这个主题的春季文档,但有些事情对我来说仍然不清楚.文件说明:

如果要将(例如)HTTP请求作用域bean注入另一个bean,则必须注入AOP代理来代替作用域bean.也就是说,您需要注入一个代理对象,该对象公开与范围对象相同的公共接口,但也可以从相关范围(例如,HTTP请求)检索真实的目标对象,并将方法调用委托给真实对象.

配置示例如下:

<bean id="userPreferences" class="com.foo.UserPreferences" scope="session">
     <aop:scoped-proxy/>
</bean>

<bean id="userManager" class="com.foo.UserManager">
     <property name="userPreferences" ref="userPreferences"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

这里,userManager bean的范围是singleton.所以,我想知道这个代理事物是否适用于单例范围的bean,也就是说,如果你想将web-scoped bean注入单例bean,或者它也适用于原型bean?例如,如果userManager的范围是原型?

我问这个是因为我看到一些代码在不使用aop-proxy的情况下将会话范围的bean注入到原型中,但我不确定这是否正确...特别是那些在某些web-app中的DAO bean,scoped作为会话,它们被注入到原型范围的控制器中,用于多用户环境.这是正确的方法吗?一般来说,应该如何在Web应用程序环境中使用DAO/Service bean?

任何想法将不胜感激.

spring scope dao javabeans httpsession

11
推荐指数
1
解决办法
8463
查看次数

将JasperServer"嵌入"外部网络应用程序?

有没有办法将JasperServer集成/嵌入到另一个Web应用程序中?问题是应该以某种方式绕过JasperServer的登录页面.是否可以通过Web服务/ REST进行身份验证,跳过登录页面,然后在iframe中显示主服务器页面,或者出现这种情况?

谢谢.

java web-applications jasper-reports jasperserver

11
推荐指数
1
解决办法
6969
查看次数

Nginx代理缓冲 - 更改缓冲区的数量与大小?

我想知道并试图找出这两个设置:

proxy_buffers [number] [size];
Run Code Online (Sandbox Code Playgroud)

可能会影响(改善/降低)代理服务器的性能,以及是否更改缓冲区的大小,数量或两者......?

在我的特定情况下,我们讨论的是一个服务于动态生成的二进制文件的系统,其大小可能不同(约60 - 200kB).Nginx充当负载平衡器,在2个Tomcats面前充当发电机.我在Nginx的error.log中看到,使用默认缓冲区的大小设置,所有代理响应都缓存到文件中,因此我发现逻辑上是将设置更改为如下所示:

proxy_buffers 4 32k;
Run Code Online (Sandbox Code Playgroud)

并且警告消息消失了.

我在这里不清楚的是,如果我最好设置1个较大的缓冲区,或者几个较小的缓冲区......例如:

proxy_buffers 1 128k;vs proxy_buffers 4 32k;vs proxy_buffers 8 16k;等...

可能有什么不同,以及它可能如何影响性能(如果有的话)?

proxy load-balancing nginx

11
推荐指数
1
解决办法
3769
查看次数

"Java is portable"是什么意思?

我是Java新手.我对Java可移植性感到困惑.

如果Java语言是可移植的,为什么enum在J2ME中未知?

我是一名C++程序员.在C++中,使用哪个平台或库并不重要.C++ language在所有平台上都没有变化.

我的目的是开发一个只使用原始类型的Java库int,String或者Array(像某个类似于库的东西Genetic algorithms).我想在移动和桌面应用程序中使用此库.但似乎 enum在所有平台上都不存在或其他一些关键字.

我想我误解了它的含义Java portability.

"Java is portable"是什么意思?

java portability

9
推荐指数
3
解决办法
2万
查看次数

Spring安全性返回String作为主体而不是登录失败时的UserDetails?

要么我错过了一些东西,要么就是它的工作原理......
也就是说,我实现了UserDetailsService,并将其分为(AppUser下面)spring实用类User,(实现UserDetails).如果重要,它会是这样的:

@Override
public UserDetails loadUserByUsername(String username)
throws UsernameNotFoundException {
    // try loading user by its name
    SystemUser user = null;
    try {
        user = this.sysUserService.getByUsername(username);
        if(user == null)
            throw new UsernameNotFoundException("User not found!");
    }
    catch(Exception e) {
        throw new DataRetrievalFailureException(
                "Could not load user with username: " + username);
    }
    // load user rights, and create UserDetails instance
    UserDetails res = new AppUser(user, getUserAuthorities(user));

    return res;
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用这种方法实现帐户锁定:

public class LoginFailureEventListenter …
Run Code Online (Sandbox Code Playgroud)

java authentication spring login spring-security

9
推荐指数
1
解决办法
4486
查看次数

如何在html邮件中区分"真实"邮件附件与pics?

我正在搞乱OpenPop,一个用C#编写的用于POP3邮件获取的库.它似乎工作正常,但我不明白如何在显式附加文件与邮件之间做出区分,以及像HTML内容邮件中的图片之类的东西.这个库将它们全部视为"附件".根据我的需要,我不会将HTML邮件中的图片视为附件.
来自图书馆文档:

MessagePart被认为是附件,如果
- 它不是保留文本而不是MultiPart消息或
- 它有一个Content-Disposition标题,表明它是一个附件

至少在理论上我应该做什么或搜索什么(因为我对邮件协议并不熟悉)?

.net c# pop3 openpop

6
推荐指数
2
解决办法
1874
查看次数

用Java正则表达式递归替换?

我可以替换ABC(10,5)(10)%(5)使用:

replaceAll("ABC\\(([^,]*)\\,([^,]*)\\)", "($1)%($2)")
Run Code Online (Sandbox Code Playgroud)

但是我无法弄清楚怎么做ABC(ABC(20,2),5)或者ABC(ABC(30,2),3+2).

如果我能够转换为((20)%(2))%5如何转换回ABC(ABC(20,2),5)

谢谢,j

java regex recursion

5
推荐指数
1
解决办法
1930
查看次数

Java泛型 - 类<?>构造函数参数问题

我已经使用Java很长一段时间了,但有些事情对我来说仍然不太清楚,特别是涉及到泛型......

事情就是这样:我Search正在使用这个类(详见此处),构造如下:

public Search(Class<?> searchClass) {...}
Run Code Online (Sandbox Code Playgroud)

此外,我有一个参数化的通用包装器,如下所示:

public class HibernateSearch<E> extends Search implements Serializable {
    public HibernateSearch(Class<E> entityClass) {
        super(entityClass);
    }
    // ... omitted for brevity
}
Run Code Online (Sandbox Code Playgroud)

现在,我需要的是以下内容:我想创建参数化类,其中包含此类作为其字段,例如

public class BaseSelectorComposer<T> extends SelectorComposer<Window> {

    private HibernateSearch<T> searchObject;
    ...
    @Override
    public void doAfterCompose(Window comp) throws Exception {
        super.doAfterCompose(comp);
        this.searchObject =
             new HibernateSearchObject<T>( now what...??? );
        ...
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我认为,从给定的例子中我所面临的问题是显而易见的.
有人可以建议在这里可以做些什么,或者一些替代方案?

java generics search hibernate hibernate-search

5
推荐指数
1
解决办法
3200
查看次数

带有javax.xml.soap的SOAP消息 - 名称空间错误?

以下是我应该从我的java Web应用程序调用的.NET Web服务的通用示例SOAP请求:

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:xsd="http://www.w3.org/2001/XMLSchema"
               xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
 <soap:Body>
  <setAMRequestData xmlns="http://tempuri.org/">
    <id>int</id>
  </setAMRequestData>
 </soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)

我可以使用以下代码段从java控制台应用程序生成类似的东西:

import javax.xml.XMLConstants;
import javax.xml.namespace.QName;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPBodyElement;
import javax.xml.soap.SOAPConnection;
import javax.xml.soap.SOAPConnectionFactory;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPMessage;
...
SOAPConnectionFactory sfc = SOAPConnectionFactory.newInstance();
SOAPConnection connection = sfc.createConnection();
MessageFactory mf = MessageFactory.newInstance();
SOAPMessage sm = mf.createMessage();

SOAPHeader sh = sm.getSOAPHeader();
SOAPBody sb = sm.getSOAPBody();
sh.detachNode();

QName bodyName = new QName("http://tempuri.org/", "setAMRequestData", XMLConstants.DEFAULT_NS_PREFIX);
SOAPBodyElement bodyElement = sb.addBodyElement(bodyName);
QName n = new QName("id");                                          
SOAPElement quotation = …
Run Code Online (Sandbox Code Playgroud)

java asp.net soap web-services soapui

4
推荐指数
1
解决办法
3万
查看次数