shiro - 在 apache shiro 上为主题添加信息

标签 shiro principal subject

我正在使用 apache shiro。当我想知道用户是否有权限和角色时,我使用 SecutiryUtils.getSubject()。我想知道如何向主题添加更多信息,例如电子邮件、主键和我需要的任何其他业务信息,以便在必要时检索该信息。

这是我的 shiro.ini:

[main]
ds = org.apache.shiro.jndi.JndiObjectFactory   
ds.requiredType = javax.sql.DataSource  
ds.resourceName = java:/comp/env/jdbc/myDS

# JDBC realm config  
jdbcRealm = com.mycompany.JdbcRealmImpl
jdbcRealm.permissionsLookupEnabled = true 
jdbcRealm.authenticationQuery = SELECT password FROM user WHERE username = ? AND status = 1
jdbcRealm.dataSource = $ds

sha256Matcher = org.apache.shiro.authc.credential.Sha256CredentialsMatcher
jdbcRealm.credentialsMatcher = $sha256Matcher

[urls]
/logout = logout
/** = authcBasic

这是我的 JdbcRealm
public class JdbcRealmImpl extends JdbcRealm {

    public JdbcRealmImpl() {
        super();
    }

    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(
            final AuthenticationToken token) throws AuthenticationException {

        final AuthenticationInfo info = super.doGetAuthenticationInfo(token);    

        // create a user to test
        final User user = new User();
        user.setId(11111);

        return new SimpleAuthenticationInfo(user, info.getCredentials(),
                getName());
    }

}

这是我尝试检索用户信息的代码。
    final Subject currentUser = SecurityUtils.getSubject();
    final User user = (User) currentUser.getPrincipal();
    // null
    System.out.println(user); 

最佳答案

您应该将其放入数据库并使用主题用户名(例如电子邮件地址)检索它。

关于shiro - 在 apache shiro 上为主题添加信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25514091/

相关文章:

java - 了解 secure/httponly cookie 如何为 java 应用程序工作

grails - 如何在我的项目中实现 Grails 的 Shiro 安全性

azure - 读取 azure blob 时使用服务主体

java - 如何在 RxJava2 中使用 void Subject?

javascript - 在服务级别处理 HttpClient Http 错误

tomcat - 如何将 Apache Shiro 指向多个动态生成的 LDAP 服务器?

java - 如何在 websocket open 方法中获取当前用户的 id?

matlab - Matlab主成分回归(pcr)分析中的常数项

javascript - 我所有的 Observables 错误 'takeUntil is not a function'