Integrasi asli
Buat projek
Buat projek Spring Boot, cuma tambah kebergantungan Web:
Selepas projek berjaya dibuat, tambahkan kebergantungan berkaitan Shiro Kebergantungan dalam fail pom.xml yang lengkap adalah seperti berikut:
<dependencies> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency> <dependency> <groupid>org.apache.shiro</groupid> <artifactid>shiro-web</artifactid> <version>1.4.0</version> </dependency> <dependency> <groupid>org.apache.shiro</groupid> <artifactid>shiro-spring</artifactid> <version>1.4.0</version> </dependency> </dependencies>
Buat Alam
Seterusnya, mari sesuaikan Realm komponen teras:public class MyRealm extends AuthorizingRealm { @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { return null; } @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { String username = (String) token.getPrincipal(); if (!"javaboy".equals(username)) { throw new UnknownAccountException("账户不存在!"); } return new SimpleAuthenticationInfo(username, "123", getName()); } }
Konfigurasikan Shiro
Seterusnya, konfigurasikan Shiro:@Configuration public class ShiroConfig { @Bean MyRealm myRealm() { return new MyRealm(); } @Bean SecurityManager securityManager() { DefaultWebSecurityManager manager = new DefaultWebSecurityManager(); manager.setRealm(myRealm()); return manager; } @Bean ShiroFilterFactoryBean shiroFilterFactoryBean() { ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean(); bean.setSecurityManager(securityManager()); bean.setLoginUrl("/login"); bean.setSuccessUrl("/index"); bean.setUnauthorizedUrl("/unauthorizedurl"); Map<string> map = new LinkedHashMap(); map.put("/doLogin", "anon"); map.put("/**", "authc"); bean.setFilterChainDefinitionMap(map); return bean; } }</string>
@RestController public class LoginController { @PostMapping("/doLogin") public void doLogin(String username, String password) { Subject subject = SecurityUtils.getSubject(); try { subject.login(new UsernamePasswordToken(username, password)); System.out.println("登录成功!"); } catch (AuthenticationException e) { e.printStackTrace(); System.out.println("登录失败!"); } } @GetMapping("/hello") public String hello() { return "hello"; } @GetMapping("/login") public String login() { return "please login!"; } }
Gunakan Shiro Starter
Kaedah konfigurasi di atas sebenarnya setara kepada konfigurasi XML dalam SSM Dapatkan Spring Boot dan tulis semula dalam kod Java Selain kaedah ini, kami juga boleh terus menggunakan Starter yang disediakan secara rasmi oleh Shiro. Buat projek seperti di atas Selepas berjaya dibuat, tambah , kebergantungan ini boleh menggantikan dua kebergantungan sebelumnya shiro-spring-boot-web-starter
dan shiro-web
, fail pom.xml adalah seperti berikut :shiro-spring
<dependencies> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency> <dependency> <groupid>org.apache.shiro</groupid> <artifactid>shiro-spring-boot-web-starter</artifactid> <version>1.4.0</version> </dependency> </dependencies>
Create Realm
Alam di sini adalah sama seperti dahulu, jadi saya tidak akan menjelaskan secara terperinci.Konfigurasikan maklumat asas Shiro
Seterusnya, konfigurasikan maklumat asas Shiro dalam application.properties:shiro.sessionManager.sessionIdCookieEnabled=true shiro.sessionManager.sessionIdUrlRewritingEnabled=true shiro.unauthorizedUrl=/unauthorizedurl shiro.web.enabled=true shiro.successUrl=/index shiro.loginUrl=/login
rreeee
Atas ialah kandungan terperinci Bagaimana untuk mengintegrasikan Shiro dalam SpringBoot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!