登录逻辑
外部公开链接
在auth-service.beans.xml中定义了
nopAuthHttpServerFilter和nopAuthFilterConfig。其中AuthHttpServerFilter负责执行所有用户登录检查,如果发现没有登录就返回HTTP 401错误或者重定向到登录页。
公开链接
authFilter使用AuthFilterConfig中的配置来确定哪些路径是公开路径。
缺省情况下开放了如下路径:
- /r/LoginApi_* 等登录相关接口
- /q/health* 等健康检查接口
- /q/metrics* 等内部状态度量接口
|
定制登录逻辑
存在两种方式定制登录逻辑
1. 定制AuthHttpServerFilter
如果需要定制登录逻辑,可以继承AuthHttpServerFilter,然后定义一个id为nopAuthHttpServerFilter的bean,即可覆盖平台中内置的authFilter。
|
因为平台内置的nopAuthServerFilter标记了
ioc:default=true,所以只要发现有其他同名的bean,就会自动覆盖平台内置的authFilter
2. 定制ILoginService
authFilter中实际执行登录验证操作时使用的是ILoginService接口,可以提供一个ILoginService的实现来覆盖系统内置的登录逻辑。
与AuthFilter不同的是,这里无法访问到Web环境,所以一些涉及到Web环境处理的逻辑只能通过继承AuthHttpServerFilter来实现(比如修改cookie绑定逻辑等)。
目前集成keycloak单点登录服务就是用通过增加OAuthLoginServiceImpl类来实现,参见sso.md
配置项
nop.auth.login.use-dao-user-context-cache
设置为true后会启用DaoUserContextCache,将IUserContext中的信息保存到NopAuthSession表中。nop.auth.access-token-expire-seconds
访问令牌(access token)超时时间,缺省为30*60,即30分钟nop.auth.refresh-token-expire-seconds
刷新令牌(refresh token)的超时时间,缺省为300*60,即5个小时