单点登录cas常见问题(十二) - Principal的id对应数据库表中的哪个字段?

来源:互联网 发布:java decompiler 下载 编辑:程序博客网 时间:2024/09/21 06:16
Principal.getId()拿到的用户id,默认是从Credential.getId()拷贝过来的,Principal实例主要是来自DefaultPrincipalFactory
DefaultPrincipalFactory.createPrincipal(final String id)
我们看一下QueryDatabaseAuthenticationHandler 是怎么调用DefaultPrincipalFactory.createPrincipal()的
class QueryDatabaseAuthenticationHandler extends AbstractJdbcUsernamePasswordAuthenticationHandler {    @Override    protected final HandlerResult authenticateUsernamePasswordInternal(final UsernamePasswordCredential credential)            throws GeneralSecurityException, PreventedException {        final String username = credential.getUsername();        ......        return createHandlerResult(credential, this.principalFactory.createPrincipal(username), null);    }}

可以看到Principal的id就是来自Credential.getId()
那么Credential的id又是从哪来的呢
UsernamePasswordCredential implements Credential{.........    public String getId() {        return this.username;    }.........}


从代码可以看到,UsernamePasswordCredential.getId()返回的就是用户登陆时在网页上输入的用户名username,而不是数据库表中user的id(整型数据),它是一个String类型。

0 0
原创粉丝点击