CRM项目基于Spring-Security处理登录请求和权限验证并工具类封装R对象回传前端------CRM项目

02-27 1352阅读 0评论
package com.alatus.config.handler;
import com.alatus.result.R;
import com.alatus.util.JSONUtils;
import com.alatus.util.ResponseUtils;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.web.access.AccessDeniedHandler;
import org.springframework.stereotype.Component;
import java.io.IOException;
@Component
public class MyAccessDeniedHandler implements AccessDeniedHandler {
    @Override
    public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException, ServletException {
        //执行到这里,说明登录成功,那我们向前端返回json就行了
        //R result = R.FAIL(accessDeniedException.getLocalizedMessage());
        R result = R.FAIL("抱歉,没有权限访问");
        //把R对象转成json
        String resultJSON = JSONUtils.toJSON(result);
        //把json写出去,写到浏览器
        ResponseUtils.write(response, resultJSON);
    }
}
package com.alatus.config.handler;
import com.alatus.result.R;
import com.alatus.util.JSONUtils;
import com.alatus.util.ResponseUtils;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.web.access.AccessDeniedHandler;
import org.springframework.stereotype.Component;
import java.io.IOException;
@Component
public class MyAccessDeniedHandler implements AccessDeniedHandler {
    @Override
    public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException, ServletException {
        //执行到这里,说明登录成功,那我们向前端返回json就行了
        //R result = R.FAIL(accessDeniedException.getLocalizedMessage());
        R result = R.FAIL("抱歉,没有权限访问");
        //把R对象转成json
        String resultJSON = JSONUtils.toJSON(result);
        //把json写出去,写到浏览器
        ResponseUtils.write(response, resultJSON);
    }
}
package com.alatus.config.handler;
import com.alatus.result.R;
import com.alatus.util.JSONUtils;
import com.alatus.util.ResponseUtils;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.authentication.AuthenticationFailureHandler;
import org.springframework.stereotype.Component;
import java.io.IOException;
@Component
public class MyAuthenticationFailureHandler implements AuthenticationFailureHandler {
    @Override
    public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException {
        //执行到这里,说明登录成功,那我们向前端返回json就行了
        R result = R.FAIL(exception.getLocalizedMessage());
        //把R对象转成json
        String resultJSON = JSONUtils.toJSON(result);
        //把json写出去,写到浏览器
        ResponseUtils.write(response, resultJSON);
    }
}
package com.alatus.config.handler;
import com.alatus.result.R;
import com.alatus.util.JSONUtils;
import com.alatus.util.ResponseUtils;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.authentication.AuthenticationFailureHandler;
import org.springframework.stereotype.Component;
import java.io.IOException;
@Component
public class MyAuthenticationFailureHandler implements AuthenticationFailureHandler {
    @Override
    public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException {
        //执行到这里,说明登录成功,那我们向前端返回json就行了
        R result = R.FAIL(exception.getLocalizedMessage());
        //把R对象转成json
        String resultJSON = JSONUtils.toJSON(result);
        //把json写出去,写到浏览器
        ResponseUtils.write(response, resultJSON);
    }
}
package com.alatus.config.handler;
import com.alatus.model.TUser;
import com.alatus.result.R;
import com.alatus.util.JSONUtils;
import com.alatus.util.ResponseUtils;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.security.core.Authentication;
import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
import org.springframework.stereotype.Component;
import java.io.IOException;
@Component
public class MyAuthenticationSuccessHandler implements AuthenticationSuccessHandler {
    @Override
    public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
        //由于禁用了session,我们在登录成功后,需要在服务器保持用户的登录状态,前端下次来访问服务器端的时候,服务器端要知道这个人登录了
        TUser tUser = (TUser) authentication.getPrincipal();
//        登录成功的统一结果
        R result = R.OK(tUser);
//        把R对象转为JSON
        String resultJSON = JSONUtils.toJSON(result);
//        把R以JSON传回前端
        ResponseUtils.write(response,resultJSON);
    }
}
package com.alatus.config.handler;
import com.alatus.model.TUser;
import com.alatus.result.R;
import com.alatus.util.JSONUtils;
import com.alatus.util.ResponseUtils;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.security.core.Authentication;
import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
import org.springframework.stereotype.Component;
import java.io.IOException;
@Component
public class MyAuthenticationSuccessHandler implements AuthenticationSuccessHandler {
    @Override
    public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
        //由于禁用了session,我们在登录成功后,需要在服务器保持用户的登录状态,前端下次来访问服务器端的时候,服务器端要知道这个人登录了
        TUser tUser = (TUser) authentication.getPrincipal();
//        登录成功的统一结果
        R result = R.OK(tUser);
//        把R对象转为JSON
        String resultJSON = JSONUtils.toJSON(result);
//        把R以JSON传回前端
        ResponseUtils.write(response,resultJSON);
    }
}
package com.alatus.config.handler;
import com.alatus.model.TUser;
import com.alatus.result.CodeEnum;
import com.alatus.result.R;
import com.alatus.util.JSONUtils;
import com.alatus.util.ResponseUtils;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.security.core.Authentication;
import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
import org.springframework.stereotype.Component;
import java.io.IOException;
@Component
public class MyLogoutSuccessHandler implements LogoutSuccessHandler {
    @Override
    public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
        //用户退出登录,那么把redis中的jwt删除
        TUser tUser = (TUser) authentication.getPrincipal();
        //执行到这里,说明退出成功,那我们向前端返回json就行了
        R result = R.OK(CodeEnum.OK);
        //把R对象转成json
        String resultJSON = JSONUtils.toJSON(result);
        //把json写出去,写到浏览器
        ResponseUtils.write(response, resultJSON);
    }
}
package com.alatus.config.handler;
import com.alatus.model.TUser;
import com.alatus.result.CodeEnum;
import com.alatus.result.R;
import com.alatus.util.JSONUtils;
import com.alatus.util.ResponseUtils;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.security.core.Authentication;
import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
import org.springframework.stereotype.Component;
import java.io.IOException;
@Component
public class MyLogoutSuccessHandler implements LogoutSuccessHandler {
    @Override
    public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
        //用户退出登录,那么把redis中的jwt删除
        TUser tUser = (TUser) authentication.getPrincipal();
        //执行到这里,说明退出成功,那我们向前端返回json就行了
        R result = R.OK(CodeEnum.OK);
        //把R对象转成json
        String resultJSON = JSONUtils.toJSON(result);
        //把json写出去,写到浏览器
        ResponseUtils.write(response, resultJSON);
    }
}
package com.alatus.config.handler;
import com.alatus.model.TUser;
import com.alatus.result.CodeEnum;
import com.alatus.result.R;
import com.alatus.util.JSONUtils;
import com.alatus.util.ResponseUtils;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.security.core.Authentication;
import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
import org.springframework.stereotype.Component;
import java.io.IOException;
@Component
public class MyLogoutSuccessHandler implements LogoutSuccessHandler {
    @Override
    public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
        //用户退出登录,那么把redis中的jwt删除
        TUser tUser = (TUser) authentication.getPrincipal();
        //执行到这里,说明退出成功,那我们向前端返回json就行了
        R result = R.OK(CodeEnum.OK);
        //把R对象转成json
        String resultJSON = JSONUtils.toJSON(result);
        //把json写出去,写到浏览器
        ResponseUtils.write(response, resultJSON);
    }
}
package com.alatus.config.handler;
import com.alatus.model.TUser;
import com.alatus.result.CodeEnum;
import com.alatus.result.R;
import com.alatus.util.JSONUtils;
import com.alatus.util.ResponseUtils;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.security.core.Authentication;
import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
import org.springframework.stereotype.Component;
import java.io.IOException;
@Component
public class MyLogoutSuccessHandler implements LogoutSuccessHandler {
    @Override
    public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
        //用户退出登录,那么把redis中的jwt删除
        TUser tUser = (TUser) authentication.getPrincipal();
        //执行到这里,说明退出成功,那我们向前端返回json就行了
        R result = R.OK(CodeEnum.OK);
        //把R对象转成json
        String resultJSON = JSONUtils.toJSON(result);
        //把json写出去,写到浏览器
        ResponseUtils.write(response, resultJSON);
    }
}
package com.alatus.result;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum CodeEnum {
    OK(200,"成功"),
    FAIL(500,"失败");
//    结果码
    private int code;
//    结果信息
    private String msg;
}
package com.alatus.result;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum CodeEnum {
    OK(200,"成功"),
    FAIL(500,"失败");
//    结果码
    private int code;
//    结果信息
    private String msg;
}
package com.alatus.result;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
//    封装web层向前端返回的结果
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Data
public class R {
//    返回的结果码
    private int code;
//    表示返回的结果信息,比如用户登陆状态失败了,请求参数格式有误
    private String msg;
//    返回的结果数据,可能是一个对象也可能是List集合
    private Object data;
    public static R OK(int code,String msg){
        return R.builder()
                .code(code)
                .msg(msg)
                .build();
    }
    public static R OK(Object data){
        return R.builder()
                .code(CodeEnum.OK.getCode())
                .msg(CodeEnum.OK.getMsg())
                .data(data)
                .build();
    }
    public static R FAIL(){
        return R.builder()
                .code(CodeEnum.FAIL.getCode())
                .msg(CodeEnum.FAIL.getMsg())
                .build();
    }
    public static R FAIL(String msg){
        return R.builder()
                .code(CodeEnum.FAIL.getCode())
                .msg(msg)
                .build();
    }
}
package com.alatus.result;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
//    封装web层向前端返回的结果
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Data
public class R {
//    返回的结果码
    private int code;
//    表示返回的结果信息,比如用户登陆状态失败了,请求参数格式有误
    private String msg;
//    返回的结果数据,可能是一个对象也可能是List集合
    private Object data;
    public static R OK(int code,String msg){
        return R.builder()
                .code(code)
                .msg(msg)
                .build();
    }
    public static R OK(Object data){
        return R.builder()
                .code(CodeEnum.OK.getCode())
                .msg(CodeEnum.OK.getMsg())
                .data(data)
                .build();
    }
    public static R FAIL(){
        return R.builder()
                .code(CodeEnum.FAIL.getCode())
                .msg(CodeEnum.FAIL.getMsg())
                .build();
    }
    public static R FAIL(String msg){
        return R.builder()
                .code(CodeEnum.FAIL.getCode())
                .msg(msg)
                .build();
    }
}
package com.alatus.service;
import org.springframework.security.core.userdetails.UserDetailsService;
public interface UserService extends UserDetailsService {
}
package com.alatus.service;
import org.springframework.security.core.userdetails.UserDetailsService;
public interface UserService extends UserDetailsService {
}
package com.alatus.service.impl;
import com.alatus.mapper.TUserMapper;
import com.alatus.model.TUser;
import jakarta.annotation.Resource;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements com.alatus.service.UserService {
    @Resource
    private TUserMapper tUserMapper;
    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        TUser tUser = tUserMapper.selectByLoginAct(username);
        if(tUser == null){
            throw new UsernameNotFoundException("登陆账号不存在");
        }
        return tUser;
    }
}
package com.alatus.service.impl;
import com.alatus.mapper.TUserMapper;
import com.alatus.model.TUser;
import jakarta.annotation.Resource;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements com.alatus.service.UserService {
    @Resource
    private TUserMapper tUserMapper;
    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        TUser tUser = tUserMapper.selectByLoginAct(username);
        if(tUser == null){
            throw new UsernameNotFoundException("登陆账号不存在");
        }
        return tUser;
    }
}
package com.alatus.util;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.util.ObjectUtils;
import java.io.IOException;
import java.io.PrintWriter;
public class ResponseUtils {
    public static void write(HttpServletResponse response, String resultJSON) {
        response.setContentType("application/json;charset=utf-8");
        PrintWriter writer = null;
        try {
            writer = response.getWriter();
            writer.write(resultJSON);
            writer.flush();
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            //spring提供的一个对象工具类
            if (!ObjectUtils.isEmpty(writer)) {
                writer.close();
            }
        }
    }
}
package com.alatus.util;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.util.ObjectUtils;
import java.io.IOException;
import java.io.PrintWriter;
public class ResponseUtils {
    public static void write(HttpServletResponse response, String resultJSON) {
        response.setContentType("application/json;charset=utf-8");
        PrintWriter writer = null;
        try {
            writer = response.getWriter();
            writer.write(resultJSON);
            writer.flush();
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            //spring提供的一个对象工具类
            if (!ObjectUtils.isEmpty(writer)) {
                writer.close();
            }
        }
    }
}
package com.alatus.util;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JSONUtils {
    //对象映射工具类, 可以实现 java对象  json对象 的相互转化
    private static final ObjectMapper objectMapper = new ObjectMapper();
    /**
     * 把Java对象转json
     *
     * @param object
     * @return
     */
    public static String toJSON(Object object) {
        try {
            return objectMapper.writeValueAsString(object);
        } catch (JsonProcessingException e) {
            throw new RuntimeException(e);
        }
    }
    /**
     * 把json转Java对象
     *
     * @param json
     * @param clazz
     * @return
     * @param 
     */
    public static  T toBean(String json, Class clazz) {
        try {
            return objectMapper.readValue(json, clazz);
        } catch (JsonProcessingException e) {
            throw new RuntimeException(e);
        }
    }
}
package com.alatus.util;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JSONUtils {
    //对象映射工具类, 可以实现 java对象  json对象 的相互转化
    private static final ObjectMapper objectMapper = new ObjectMapper();
    /**
     * 把Java对象转json
     *
     * @param object
     * @return
     */
    public static String toJSON(Object object) {
        try {
            return objectMapper.writeValueAsString(object);
        } catch (JsonProcessingException e) {
            throw new RuntimeException(e);
        }
    }
    /**
     * 把json转Java对象
     *
     * @param json
     * @param clazz
     * @return
     * @param 
     */
    public static  T toBean(String json, Class clazz) {
        try {
            return objectMapper.readValue(json, clazz);
        } catch (JsonProcessingException e) {
            throw new RuntimeException(e);
        }
    }
}
CRM项目基于Spring-Security处理登录请求和权限验证并工具类封装R对象回传前端------CRM项目,CRM项目基于Spring-Security处理登录请求和权限验证并工具类封装R对象回传前端------CRM项目,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,前端,登录,第1张
(图片来源网络,侵删)
CRM项目基于Spring-Security处理登录请求和权限验证并工具类封装R对象回传前端------CRM项目,CRM项目基于Spring-Security处理登录请求和权限验证并工具类封装R对象回传前端------CRM项目,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,前端,登录,第2张
(图片来源网络,侵删)
CRM项目基于Spring-Security处理登录请求和权限验证并工具类封装R对象回传前端------CRM项目,CRM项目基于Spring-Security处理登录请求和权限验证并工具类封装R对象回传前端------CRM项目,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,前端,登录,第3张
(图片来源网络,侵删)

免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,1352人围观)

还没有评论,来说两句吧...

目录[+]