我对Spring和Spring安全性比较陌生.
我试图编写一个程序,我需要使用Spring安全性在服务器端验证用户,
我想出了以下内容:
public class CustomAuthenticationProvider extends AbstractUserDetailsAuthenticationProvider{
@Override
protected void additionalAuthenticationChecks(UserDetails userDetails, UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken)
throws AuthenticationException
{
System.out.println("Method invoked : additionalAuthenticationChecks isAuthenticated ? :"+usernamePasswordAuthenticationToken.isAuthenticated());
}
@Override
protected UserDetails retrieveUser(String username,UsernamePasswordAuthenticationToken authentication) throws AuthenticationException
{
System.out.println("Method invoked : retrieveUser");
//so far so good, i can authenticate user here, and throw exception if not authenticated!!
//THIS IS WHERE I WANT TO ACCESS SESSION OBJECT
}
}
Run Code Online (Sandbox Code Playgroud)
我的用例是,当用户通过身份验证时,我需要放置一个属性,如:
session.setAttribute("userObject", myUserObject);
Run Code Online (Sandbox Code Playgroud)
myUserObject是某个类的对象,我可以跨多个用户请求访问整个服务器代码.
今天我读到了Restful服务.基本上我所理解的是Restful webservices将在HTTP请求方法上工作,而不是普通的webservice将在SOAP请求上工作.
什么是Restful服务需要,因为普通的servlet也可以在HTTP方法上工作?
我在我的网络应用程序中收到"未找到线程绑定请求"错误,并希望得到一些帮助.我正在尝试使用struts2 + spring + hibernate,并使用spring来管理hibernate会话工厂,并将hibernate会话注入我的struts操作.我希望这是有道理的.当应用程序启动时,没有错误,但是当我发出第一个Web请求时,它会弹出"未找到线程绑定请求"错误.这是我的春季配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="hibernateSessionFactory" scope="singleton"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml" />
</bean>
<bean id="hibernateSession" factory-bean="hibernateSessionFactory"
factory-method="openSession" destroy-method="close" scope="request" class="org.hibernate.Session" />
</beans>
Run Code Online (Sandbox Code Playgroud)
这是我的行动:
package actions.events;
import org.hibernate.Session;
public class Listing {
Session session;
public void setHibernateSession(Session value) throws Exception
{
session = value;
}
public String execute() {
return "success";
}
}
Run Code Online (Sandbox Code Playgroud)
我唯一的领先是,如果我删除上面的'setHibernateSession'函数,我不会得到错误,因为如果动作不需要一个(懒惰的实例化),大概春天不打扰创建会话.
这是例外:
Unable to instantiate Action, actions.events.Listing, defined for 'Listing' in namespace '/events'Error creating bean with …Run Code Online (Sandbox Code Playgroud) 一旦我遇到了一个模式,将where ServletRequest和响应对象放到servlet的局部ThreadLocal变量中.servlet类还有获取当前请求和响应对象的方法.因此,为了获得这些对象,您仍然需要使用servlet对象.
拥有这些ThrealLocal局部变量有什么意义?
java ×2
java-ee ×2
servlets ×2
spring ×2
hibernate ×1
jax-rs ×1
spring-mvc ×1
struts ×1
struts2 ×1
thread-local ×1