admin-component登录拦截

1、SpringMVC配置

系统中的大部分页面都需要登录后再访问,那么就要多每次访问都进行判断,判断用户是否已经登录。在没有SpringSecurity的日子里,要判断每次访问用户是否已经登录,就需要配置一个拦截器,在SpringMVC配置中添加代码如下:

<!-- 注册拦截器 -->
<mvc:interceptors>
    <mvc:interceptor>
        <!-- 配置需要拦截资源,"/**"对应多层路径 -->
        <mvc:mapping path="/**"/>
        <!-- 配置不拦截资源 -->
        <mvc:exclude-mapping path="/admin/to/login/page.html"/>
        <mvc:exclude-mapping path="/admin/do/login.html"/>
        <mvc:exclude-mapping path="/admin/do/logout.html"/>
        <!-- 配置拦截器类 -->
        <bean class="com.alageek.crowd.mvc.interceptor.LoginInterceptor"/>
    </mvc:interceptor>
</mvc:interceptors>

2、拦截器类

上述配置中用到了名为LoginInterceptor的拦截器类,该类为自行定义,代码如下:

/**
 * 登录拦截
 * @author alageek
 */
public class LoginInterceptor extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HttpSession session = request.getSession();
        Admin admin = (Admin) session.getAttribute(CrowdConstant.ATTR_NAME_LOGIN_ADMIN);
        if(admin == null){
            throw new AccessForbiddenException(CrowdConstant.MESSAGE_ACCESS_FORBIDDEN);
        }
        return true;
    }
}

继承的父类HandlerInterceptorAdapter中有多个方法,这边只需要重写preHandle方法,表示在所有请求之前执行方法主体,方法中首先获取一个session对象,因为我们在登录后会将管理员对象放入session域中,然后从session对象中取出管理员对象判断是否为空,如果为空则抛出访问不被允许的自定义异常,若不为空则表示已登录,继续下一步操作。
ps:抛出的自定义异常由全局的异常处理机制来处理。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值