怎么建立一个网站放图片国内网站设计案例欣赏
news/
2025/9/23 4:35:06/
文章来源:
怎么建立一个网站放图片,国内网站设计案例欣赏,时彩网站开发,大型商家进驻网站开发INI 配置之前章节我们已经接触过一些 INI 配置规则了#xff0c;如果大家使用过如 Spring 之类的 IoC/DI 容器的话#xff0c;Shiro 提供的 INI 配置也是非常类似的#xff0c;即可以理解为是一个 IoC/DI 容器#xff0c;但是区别在于它从一个根对象 securityManager 开始。…INI 配置之前章节我们已经接触过一些 INI 配置规则了如果大家使用过如 Spring 之类的 IoC/DI 容器的话Shiro 提供的 INI 配置也是非常类似的即可以理解为是一个 IoC/DI 容器但是区别在于它从一个根对象 securityManager 开始。根对象 SecurityManager从之前的 Shiro 架构图可以看出Shiro 是从根对象 SecurityManager 进行身份验证和授权的也就是所有操作都是自它开始的这个对象是线程安全且真个应用只需要一个即可因此 Shiro 提供了 SecurityUtils 让我们绑定它为全局的方便后续操作。因为 Shiro 的类都是 POJO 的因此都很容易放到任何 IoC 容器管理。但是和一般的 IoC 容器的区别在于Shiro 从根对象 securityManager 开始导航Shiro 支持的依赖注入public 空参构造器对象的创建、setter 依赖注入。1、纯 Java 代码写法(com.github.zhangkaitao.shiro.chapter4.NonConfigurationCreateTest)DefaultSecurityManager securityManager new DefaultSecurityManager();//设置authenticatorModularRealmAuthenticator authenticator new ModularRealmAuthenticator();authenticator.setAuthenticationStrategy(new AtLeastOneSuccessfulStrategy());securityManager.setAuthenticator(authenticator);//设置authorizerModularRealmAuthorizer authorizer new ModularRealmAuthorizer();authorizer.setPermissionResolver(new WildcardPermissionResolver());securityManager.setAuthorizer(authorizer);//设置RealmDruidDataSource ds new DruidDataSource();ds.setDriverClassName(com.mysql.jdbc.Driver);ds.setUrl(jdbc:mysql://localhost:3306/shiro);ds.setUsername(root);ds.setPassword();JdbcRealm jdbcRealm new JdbcRealm();jdbcRealm.setDataSource(ds);jdbcRealm.setPermissionsLookupEnabled(true);securityManager.setRealms(Arrays.asList((Realm) jdbcRealm));//将SecurityManager设置到SecurityUtils 方便全局使用SecurityUtils.setSecurityManager(securityManager);Subject subject SecurityUtils.getSubject();UsernamePasswordToken token new UsernamePasswordToken(zhang, 123);subject.login(token);Assert.assertTrue(subject.isAuthenticated());2、等价的 INI 配置(shiro-config.ini)[main]\#authenticatorauthenticatororg.apache.shiro.authc.pam.ModularRealmAuthenticatorauthenticationStrategyorg.apache.shiro.authc.pam.AtLeastOneSuccessfulStrategyauthenticator.authenticationStrategy$authenticationStrategysecurityManager.authenticator$authenticator\#authorizerauthorizerorg.apache.shiro.authz.ModularRealmAuthorizerpermissionResolverorg.apache.shiro.authz.permission.WildcardPermissionResolverauthorizer.permissionResolver$permissionResolversecurityManager.authorizer$authorizer\#realmdataSourcecom.alibaba.druid.pool.DruidDataSourcedataSource.driverClassNamecom.mysql.jdbc.DriverdataSource.urljdbc:mysql://localhost:3306/shirodataSource.usernameroot\#dataSource.passwordjdbcRealmorg.apache.shiro.realm.jdbc.JdbcRealmjdbcRealm.dataSource$dataSourcejdbcRealm.permissionsLookupEnabledtruesecurityManager.realms$jdbcRealm 即使没接触过 IoC 容器的知识如上配置也是很容易理解的对象名 全限定类名 相对于调用 public 无参构造器创建对象对象名. 属性名 值 相当于调用 setter 方法设置常量值对象名. 属性名 $ 对象引用 相当于调用 setter 方法设置对象引用3、Java 代码(com.github.zhangkaitao.shiro.chapter4.ConfigurationCreateTest)Factory factory new IniSecurityManagerFactory(classpath:shiro-config.ini);org.apache.shiro.mgt.SecurityManager securityManager factory.getInstance();//将SecurityManager设置到SecurityUtils 方便全局使用SecurityUtils.setSecurityManager(securityManager);Subject subject SecurityUtils.getSubject();UsernamePasswordToken token new UsernamePasswordToken(zhang, 123);subject.login(token);Assert.assertTrue(subject.isAuthenticated()); 如上代码是从 Shiro INI 配置中获取相应的 securityManager 实例默认情况先创建一个名字为 securityManager类型为 org.apache.shiro.mgt.DefaultSecurityManager 的默认的 SecurityManager如果想自定义只需要在 ini 配置文件中指定 “securityManagerSecurityManager 实现类” 即可名字必须为 securityManager它是起始的根IniSecurityManagerFactory 是创建 securityManager 的工厂其需要一个 ini 配置文件路径其支持 “classpath:”(类路径)、“file:”(文件系统)、“url:”(网络)三种路径格式默认是文件系统接着获取 SecuriyManager 实例后续步骤和之前的一样。从如上可以看出 Shiro INI 配置方式本身提供了一个简单的 IoC/DI 机制方便在配置文件配置但是是从 securityManager 这个根对象开始导航。INI 配置ini 配置文件类似于 Java 中的 properties(keyvalue)不过提供了将 key/value 分类的特性key 是每个部分不重复即可而不是整个配置文件。如下是 INI 配置分类[main]\#提供了对根对象securityManager及其依赖的配置securityManagerorg.apache.shiro.mgt.DefaultSecurityManager…………securityManager.realms$jdbcRealm[users]\#提供了对用户/密码及其角色的配置用户名密码角色1角色2usernamepassword,role1,role2[roles]\#提供了角色及权限之间关系的配置角色权限1权限2role1permission1,permission2[urls]\#用于web提供了对web url拦截相关的配置url拦截器[参数]拦截器/index.html anon/admin/** authc, roles[admin], perms[permission1][main] 部分提供了对根对象 securityManager 及其依赖对象的配置。创建对象securityManagerorg.apache.shiro.mgt.DefaultSecurityManager其构造器必须是 public 空参构造器通过反射创建相应的实例。常量值 setter 注入dataSource.driverClassNamecom.mysql.jdbc.DriverjdbcRealm.permissionsLookupEnabledtrue 会自动调用 jdbcRealm.setPermissionsLookupEnabled(true)对于这种常量值会自动类型转换。对象引用 setter 注入authenticatororg.apache.shiro.authc.pam.ModularRealmAuthenticatorauthenticationStrategyorg.apache.shiro.authc.pam.AtLeastOneSuccessfulStrategyauthenticator.authenticationStrategy$authenticationStrategysecurityManager.authenticator$authenticator 会自动通过 securityManager.setAuthenticator(authenticator) 注入引用依赖。嵌套属性 setter 注入securityManager.authenticator.authenticationStrategy$authenticationStrategy也支持这种嵌套方式的 setter 注入。byte 数组 setter 注入\#base64 byte[]authenticator.bytesaGVsbG8\#hex byte[]authenticator.bytes0x68656c6c6f 默认需要使用 Base64 进行编码也可以使用 0x 十六进制。Array/Set/List setter 注入authenticator.array1,2,3authenticator.set$jdbcRealm,$jdbcRealm 多个之间通过 “” 分割。Map setter 注入authenticator.map$jdbcRealm:$jdbcRealm,1:1,key:abc即格式是mapkeyvaluekeyvalue可以注入常量及引用值常量的话都看作字符串(即使有泛型也不会自动造型)。实例化 / 注入顺序realmRealm1realmRealm12authenticator.bytesaGVsbG8authenticator.bytes0x68656c6c6f 后边的覆盖前边的注入。测试用例请参考配置文件 shiro-config-main.ini。[users] 部分配置用户名 / 密码及其角色格式“用户名 密码角色 1角色 2”角色部分可省略。如[users]zhang123,role1,role2wang123 密码一般生成其摘要 / 加密存储后续章节介绍。[roles] 部分配置角色及权限之间的关系格式“角色 权限 1权限 2”如[roles]role1user:create,user:updaterole2* 如果只有角色没有对应的权限可以不配 roles具体规则请参考授权章节。[urls] 部分配置 url 及相应的拦截器之间的关系格式“url 拦截器 [参数]拦截器 [参数]如[urls]/admin/** authc, roles[admin], perms[permission1] 具体规则参见 web 相关章节。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/911368.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!