如何去掉roller的认证模块acegi

本文介绍了一种简化Roller集成的方法,通过移除Acegi安全模块并自定义过滤器来实现二次开发。适用于希望使用自定义认证逻辑的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

roller使用acegi做为其认证模块,acegi是比较成功的一个安全与认证模块,相信很多项目中都有使用到。但是有些项目有自己的认证模块又想集成roller做二次开发,这时可能acegi是必须砍掉的。

 

下面说说如何简单去掉acegi,呵呵,不是很彻底!

 

通过搜索roller源代码,发现好几个类引用到acegi的东西,导致roller跟acegi耦合太强!roller启动时RollerContext必须被加载,这个类继承spring的ContextLoaderListener,所以roller启动的时候会去加载spring的配置文件。不想说那么多了,先说怎么做吧。

 

1、在RollerContext类中注释掉

initializeSecurityFeatures(servletContext);

 

2、写一个Filter实现类,增加登陆逻辑处理。

public class AgFilter implements Filter{

	private static Log log = LogFactory.getLog(AgFilter.class);
	public void doFilter(ServletRequest req, ServletResponse res,
			FilterChain chain) throws IOException, ServletException {

		RollerSession rs = RollerSession
				.getRollerSession((HttpServletRequest) req);

		HttpServletRequest hs = (HttpServletRequest) req;
		//认证逻辑处理
		if (hs.getServletPath().indexOf("roller_j_security_check") > -1) {
			String userName = req.getParameter("j_username");
			try {
				UserManager umgr = WebloggerFactory.getWeblogger()
						.getUserManager();
				User user = umgr.getUserByUserName(userName);
				rs.setAuthenticatedUser(user);

				
				req.getRequestDispatcher("/roller-ui/login-redirect.jsp").forward(req, res);
				return ;
			} catch (WebloggerException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		chain.doFilter(req, res);
	}
	public void destroy() {
	}
	public void init(FilterConfig arg0) throws ServletException {
	}

}

 

3、修改web.xml去掉acegi的filter

    <filter>
        <filter-name>securityFilter</filter-name>
        <filter-class>org.apache.roller.weblogger.ui.core.filters.AgFilter</filter-class>
<!--        <init-param>-->
<!--            <param-name>targetClass</param-name>-->
<!--            <param-value>org.acegisecurity.util.FilterChainProxy</param-value>-->
<!--        </init-param>-->
    </filter>

 

基本上这样就可以了。虽然roller启动时会加载一些acegi的东西,但我们没有用到也就无所谓了。这样是最简单的也是不彻底的。

 

相信利用roller进行二次开发有各种各样的技巧、方法、思路,有的请分享一下!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值