# 免登录认证请求

# 场景

为了确保系统安全,默认所有的后台请求都要求登录之后才能访问,如seeyon/ajax.do?method=ajaxAction,如未登录,直接访问请求会提示无权限或强制退出。

但某些特殊意义的请求需要确保无需登录,比如帐号密码登录认证请求就需要免登录认证。其它三方认证、握手的请求也往往要求不做登录认证。

产品针对不同版本提供了免登录的解决方案。

注意:能力越大责任越大,谁做的免登录认证,谁就需要对请求的安全性负责!

# V7.1SP1及更早版本免登录认证方案

V7.1SP1及更早版本,对于无需登录即可访问的url(比如登录),可以加@NeedlessCheckLogin注解:

public class MainController{
    @NeedlessCheckLogin
    public ModelAndView login(HttpServletRequest request, HttpServletResponse response) throws Exception {

    }
}

7.1SP1以后将匿名请求控制收归平台统一管理,原则上不允许应用随意新增无需登录的请求。

# V8.0~V8.2版本免登录认证方案

V8.0(包含)到V8.2(包含)之间的版本,需要通过修改 ctp-core\src\main\resources\needless_check_login.xml和needless_check_login_recheck.xml 的配置,配置格式:

<beans>
    <bean>
        <id>/sc.do</id>
        <name>com.seeyon.cap4.form.modules.smartCode.controller.SmartCodeController</name>
        <methods>
            <method>qr</method>
        </methods>
    </bean>
    <bean>
        <id>/media/media.do</id>
        <name>com.seeyon.ctp.common.media.controller.MediaController</name>
        <methods>
            <method>mediaShow</method>
        </methods>
    </bean>

	<!-- 不要删除原来默认的配置,仅在最后beans标签中追加客开需要的免登录接口 -->
	<bean>
        <id>对应springmvc的beanId</id>
        <name>对应springmvc的Controller</name>
        <methods>
            <method>对应Controller下的具体方法,用于限定只开通一个请求</method>
        </methods>
    </bean>
</beans>

代码位置:

1743403970378.png

最终生产环境打包位置参考“V8.2SP1及更高版本免登录认证方案”的截图。

# V8.2SP1及更高版本免登录认证方案

自V8.2SP1版本开始,为防止侵入标准产品源码,平台提供了扩展登录认证的能力:

客开只需要在各自 ctp-customize-xxx客开工程\src\main\resources\目录 新建needless_check_login_xxx.xml和needless_check_login_recheck_xxx.xml的文件名,其中_xxx名称自定义,最好是插件的英文名:

<beans>
	<!-- 在beans标签中追加客开需要的免登录接口 -->
	<bean>
        <id>对应springmvc的beanId</id>
        <name>对应springmvc的Controller</name>
        <methods>
            <method>对应Controller下的具体方法,用于限定只开通一个请求</method>
        </methods>
    </bean>
</beans>

代码示例:

1743404892632.png

最终生产环境打包位置:

1743404010639.png

编撰人:het