ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Spring用户登陆鉴权功能

2020-01-26 14:09:42  阅读:348  来源: 互联网

标签:Spring 用户 springframework public org import HandlerMethod servlet 鉴权


1.创建一个方法注解,用于定义需要登录

package com.example.demo1.config;

import java.lang.annotation.*;

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface NeedLogin {

}

2.添加一个自定义拦截器实现HandlerInterceptor 接口

package com.example.demo1.config;

import com.example.demo1.dataobject.GiteeUser;
import com.example.demo1.pojo.User;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Component
public class AuthHanderInterceptor implements HandlerInterceptor {
    //复写方法
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //如果handler属于HandlerMethod
        if (handler instanceof HandlerMethod){
            //强转一下
            HandlerMethod handlerMethod = (HandlerMethod) handler;
            //取一下needLogin的注解
            NeedLogin needLogin = handlerMethod.getMethodAnnotation(NeedLogin.class);
            //判断该方法上面有没有NeedLogin注解
            if (needLogin !=null){
               GiteeUser u  = (GiteeUser) request.getSession().getAttribute("user");
               if (u==null){
                   response.sendRedirect("/Login.html");
                   return  false;
               }else {
                   response.sendRedirect("/LoginSuccess.html");
               }
            }
        }
        return true;
    }
}

3.注册拦截器实现WebMvcConfigurer接口

package com.example.demo1.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class LoginWebMvcConfigurer implements WebMvcConfigurer {
    @Autowired
    private AuthHanderInterceptor authHanderInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
    //拦截所有方法
        registry.addInterceptor(authHanderInterceptor).addPathPatterns("/**");
    }
}

4.在方法上添加注解

 @RequestMapping(path = "get")
    @NeedLogin
    public String get(GiteeUser giteeUser){
        giteeUser.setUsername("小豪");
        return giteeUser.getUsername();
    }
RuiHao-He 发布了13 篇原创文章 · 获赞 0 · 访问量 700 私信 关注

标签:Spring,用户,springframework,public,org,import,HandlerMethod,servlet,鉴权
来源: https://blog.csdn.net/qq_43496316/article/details/104087061

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有