写一个ssm+shiro的登录认证
时间: 2023-07-25 14:43:43 浏览: 56
好的,下面是一个简单的SSM+Shiro的登录认证示例:
首先,需要在pom.xml中添加相关依赖:
```xml
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.5.3</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.5.3</version>
</dependency>
```
其中,spring-webmvc和spring-jdbc是Spring的核心依赖,mybatis-spring-boot-starter是MyBatis的依赖,shiro-core和shiro-spring是Shiro的依赖。
然后,在Spring的配置文件中配置数据源和MyBatis:
```xml
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="typeAliasesPackage" value="com.example.demo.entity"/>
<property name="mapperLocations" value="classpath:/mapper/*.xml"/>
</bean>
<bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.example.demo.mapper"/>
</bean>
```
接下来,配置Shiro:
```xml
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="myRealm"/>
</bean>
<bean id="myRealm" class="com.example.demo.shiro.MyRealm"/>
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<property name="securityManager" ref="securityManager"/>
<property name="loginUrl" value="/login"/> <!-- 登录页面 -->
<property name="successUrl" value="/index"/> <!-- 登录成功页面 -->
<property name="filterChainDefinitions">
<value>
/login = anon
/logout = logout
/** = authc
</value>
</property>
</bean>
```
其中,DefaultWebSecurityManager是Shiro的安全管理器,MyRealm是自定义的Realm类,ShiroFilterFactoryBean是Shiro的过滤器。
最后,实现登录认证:
```java
@Controller
public class LoginController {
@Autowired
private UserService userService;
@RequestMapping("/login")
public String login() {
return "login";
}
@RequestMapping("/index")
public String index() {
return "index";
}
@RequestMapping("/loginCheck")
@ResponseBody
public String loginCheck(String username, String password) {
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
try {
subject.login(token);
return "success";
} catch (AuthenticationException e) {
return "fail";
}
}
}
```
其中,UserService是自定义的用户服务类,login方法返回登录页面,index方法返回登录成功页面,loginCheck方法处理登录请求,判断用户名和密码是否正确。
以上就是一个简单的SSM+Shiro的登录认证示例,希望可以帮到你。