Apache Shiro 是一个强大且易用的 Java 安全框架,提供了认证、授权、加密和会话管理功能,可以轻松地为应用程序提供安全支持。当提到“Shiro域名”时,通常指的是在 Shiro 配置中定义的安全域,用于管理不同应用模块或子系统的安全策略。
以下是一个简单的 Shiro 配置示例,展示了如何定义一个安全域并配置认证和授权策略:
import org.apache.shiro.realm.Realm;
import org.apache.shiro.realm.text.TextConfigurationRealm;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.apache.shiro.web.servlet.ShiroFilter;
public class ShiroConfig {
public static void main(String[] args) {
// 创建 Realm
Realm realm = new TextConfigurationRealm();
((TextConfigurationRealm) realm).setCredentialsMatcher(new HashedCredentialsMatcher("SHA-256"));
// 配置用户、角色和权限
((TextConfigurationRealm) realm).setUsers Collections.singletonMap("user", new SimpleAuthenticationInfo("user", "password", getName()));
((TextConfigurationRealm) realm).setRoles Collections.singletonMap("admin", Collections.singleton("user:create"));
((TextConfigurationRealm) realm).setPermissions(Collections.singletonMap("user:create", Collections.singletonList(new SimpleGrantedAuthority("user:create"))));
// 创建 SecurityManager
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
securityManager.setRealm(realm);
// 创建 ShiroFilter
ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();
shiroFilter.setSecurityManager(securityManager);
shiroFilter.setLoginUrl("/login");
shiroFilter.setUnauthorizedUrl("/unauthorized");
// 配置过滤器链
Map<String, String> filterChainDefinitionMap = new LinkedHashMap<>();
filterChainDefinitionMap.put("/public/**", "anon");
filterChainDefinitionMap.put("/admin/**", "authc, roles[admin]");
shiroFilter.setFilterChainDefinitionMap(filterChainDefinitionMap);
// 初始化 Shiro
SecurityUtils.setSecurityManager(securityManager);
}
}
请注意,以上示例代码和参考链接仅供参考,实际使用时可能需要根据具体需求进行调整。
领取专属 10元无门槛券
手把手带您无忧上云