四 管理员登录
3. 登录验证功能
分支: git checkout -b 4.3.0_login-interceptor
3.1 目标
- 将部分资源保护起来, 让没有登录的请求不能访问
3.2 思路
3.3 代码
3.3.1 创建未登录异常
package com.atguigu.crowd.exception;
/**
* 表示用户没有登录就访问受保护资源时抛出的异常
*/
public class AccessForbiddenException extends RuntimeException {
private static final long serialVersionUID = 1L;
public AccessForbiddenException() {
super();
}
public AccessForbiddenException(String message) {
super(message);
}
public AccessForbiddenException(String message, Throwable cause) {
super(message, cause);
}
public AccessForbiddenException(Throwable cause) {
super(cause);
}
protected AccessForbiddenException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
}
3.3.2 处理未登录异常
3.3.2.1 基于 XML 的异常映射
- spring-web-mvc.xml
<!-- 配置基于 XML 的异常映射 -->
<bean id="simpleMappingExceptionResolver"
class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<!-- 配置异常类型和具体视图页面的对应关系 -->
<property name="exceptionMappings">
<props>
<!-- key 属性指定异常类全名 -->
<!-- 标签体中写对应的视图 (这个值会拼前后缀得到具体路径) -->
<prop key="java.lang.Exception">system-error</prop>
<prop key="com.atguigu.crowd.exception.AccessForbiddenException">admin-login</prop>
</props>
</prope