0 0

自定义acegi的Authentication对象?3

UsernamePasswordAuthenticationToken authen = new UsernamePasswordAuthenticationToken(   
                username, password);   
WebAuthenticationDetails webdetails = new WebAuthenticationDetails(   
                request);   
WebAuthenticationDetails   
        authen.setDetails(webdetails);   
        SecurityContextHolder.getContext().setAuthentication(authen);  

系统登录的时候调用一个Servlet根据Username从数据库取出User对象填充进上述代码,然后写了个过滤器在进行数据的拦截,但是双面的数据在过滤器使用SecurityContextHolder.getContext()
.getAuthentication().getPrincipal();无法得到填充的数据

问题补充:
beneo 写道
加一个filter, HttpSessionContextIntegrationFilter.它的作用是在web请求之间把SecurityContext存储在HttpSession中。

这个已经加了,老系统是不能登录的,新系统是一个连接带用户的.

问题补充:
zhanjia 写道
可以看看我的Acegi系列教程:
http://zhanjia.iteye.com/category/43399

已经看了,你说的这些已经实现了,但是现在我仅仅是要调用,好几天都没弄好了
2010年12月31日 08:55

4个答案 按时间排序 按投票排序

0 0

采纳的答案

String loginName = request.getUserPrincipal().getName();

直接这样写试试看

2010年12月31日 10:15
0 0

可以看看我的Acegi系列教程:
http://zhanjia.iteye.com/category/43399

2010年12月31日 09:19
0 0

不要在web.xml里面加

<filter>
    <filter-name>security</filter-name>
    <filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class>
    <init-param>
        <param-name>targetClass</param-name>
        <param-value>org.acegisecurity.util.FilterChainProxy</param-value>
    </init-param>
</filter>
 
<filter-mapping>
    <filter-name>security</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>


去你spring环境里面
<bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy">
    <property name="filterInvocationDefinitionSource">
        <!-- IMPORTANT: DON'T LINEBREAK THE FILTER LIST, OR ELSE BEAN LOOKUP BREAKS! -->
        <!-- I'M JUST DOING IT HERE FOR DISPLAY PURPOSES -->
        <value>
            CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
            PATTERN_TYPE_APACHE_ANT
            /**=httpSessionContextIntegrationFilter,logoutFilter,
authenticationProcessingFilter,exceptionTranslationFilter,filterSecurityInterceptor
        </value>
    </property>
</bean>
<bean id="httpSessionContextIntegrationFilter"
    class="org.acegisecurity.context.HttpSessionContextIntegrationFilter"/>


2010年12月31日 09:12
0 0

加一个filter, HttpSessionContextIntegrationFilter.它的作用是在web请求之间把SecurityContext存储在HttpSession中。

2010年12月31日 08:59

相关推荐

Global site tag (gtag.js) - Google Analytics