当前位置: 首页 > news >正文

方山网站建设网站开发框架的工具

方山网站建设,网站开发框架的工具,品牌高端网站制作官网,女孩子读电子商务好就业吗目录 主要流程#xff1a; 具体实现#xff1a; 主要流程#xff1a; #xff08;特殊#xff09;1、如果你需要返回json格式字符串#xff0c;那么你首先需要编写相应的处理器#xff0c;如果不需要则可直接写配置类 2、编写配置类 3、编写认证授权相关的mapper…目录 主要流程  具体实现 主要流程  特殊1、如果你需要返回json格式字符串那么你首先需要编写相应的处理器如果不需要则可直接写配置类 2、编写配置类 3、编写认证授权相关的mapper方法和service方法 4、编写认证和授权逻辑 4.1、编写认证授权逻辑的类实现UserDetailsService接口重现loadUserByUserName方法 提示不要忘记将该类放入spring容器中不然security无法使用该逻辑 4.2、根据用户名查询用户 4.3、根据用户名查询相关权限 4.4、将用户的权限集合转换为security的权限集合 4.5、构建UserDetails对象放入用户名、密码、security权限集合 4.6、返回构建好的UserDetails对象 5、编写鉴权配置 6、使用不同权限的用户登录查看他们是否能访问这些接口 具体实现 特殊1、如果你需要返回json格式字符串那么你首先需要编写相应的处理器 提示BaseResult是一个统一返回结果集这里返回结果只是一个参考因为我的业务时需要返回json格式字符串具体处理器如何操作还是看业务 登录成功处理器 //登录成功处理器 public class MyLoginSuccessHandler implements AuthenticationSuccessHandler {Overridepublic void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {response.setContentType(text/json;charsetutf-8);BaseResult baseResult new BaseResult(200,登录成功,null);response.getWriter().write(JSON.toJSONString(baseResult));} }登录失败处理器 //登录失败处理器 public class MyLoginFailureHandler implements AuthenticationFailureHandler {Overridepublic void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException {response.setContentType(text/json;charsetutf-8);BaseResult baseResult new BaseResult(402,用户名或密码错误,null);response.getWriter().write(JSON.toJSONString(baseResult));} }注销成功处理器 //登出成功处理器 public class MyLogoutSuccessHandler implements LogoutSuccessHandler {Overridepublic void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {response.setContentType(text/json;charsetutf-8);BaseResult baseResult new BaseResult(200,注销成功,null);response.getWriter().write(JSON.toJSONString(baseResult));} }未登录处理器 //未登录处理器 public class MyAuthenticationEntryPoint implements AuthenticationEntryPoint {Overridepublic void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException {response.setContentType(text/json;charsetutf-8);BaseResult baseResult new BaseResult(401,用户未登录,null);response.getWriter().write(JSON.toJSONString(baseResult));} }权限不足处理器 //权限不足处理器 public class MyAccessDeniedHandler implements AccessDeniedHandler {Overridepublic void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException, ServletException {response.setContentType(text/json;charsetutf-8);BaseResult baseResult new BaseResult(403,权限不足,null);response.getWriter().write(JSON.toJSONString(baseResult));} }2、编写配置类 提示1编写配置类的时候不要忘了PasswordEncoder密码解析器 提示2登录请求一定要是post请求否则无法请求无法到达 Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter {Overrideprotected void configure(HttpSecurity http) throws Exception {//登录配置http.formLogin().usernameParameter(username)//登录用户名项.passwordParameter(password)//登录密码项.loginProcessingUrl(/admin/login)//登录提交路径.successHandler(new MyLoginSuccessHandler())//登录成功处理器.failureHandler(new MyLoginFailureHandler());//登录失败处理器//权限拦截器配置http.authorizeRequests().antMatchers(/login).permitAll()//登录页面不用拦截.antMatchers(/admin/login).permitAll()//登录路径不用拦截.anyRequest().authenticated();//其他路径都要拦截//注销配置http.logout().logoutUrl(/admin/logout)//注销提交路径.logoutSuccessHandler(new MyLogoutSuccessHandler())//注销成功处理器.invalidateHttpSession(true)//清除session.clearAuthentication(true);//清除认证状态//异常处理http.exceptionHandling().accessDeniedHandler(new MyAccessDeniedHandler())//权限不足处理器.authenticationEntryPoint(new MyAuthenticationEntryPoint());//未登录处理器//关闭csrf防护http.csrf().disable();//开启跨域访问http.cors();}Beanpublic PasswordEncoder passwordEncoder(){return new BCryptPasswordEncoder();} }3、编写认证授权相关的mapper方法和service方法具体跟业务相关 4、编写认证和授权逻辑 编写逻辑的时候需要使用到认证和授权相关的mapper和service所以我们需要引入serviceservice中使用了相关mapper 具体流程 1、编写认证授权逻辑的类实现UserDetailsService接口重现loadUserByUserName方法         提示不要忘记将该类放入spring容器中不然security无法使用该逻辑 2、根据用户名查询用户 3、根据用户名查询相关权限 4、将用户的权限集合转换为security的权限集合 这个Permission.getUrl()很重要它就是用户拥有的权限所对应的url后期我们编写鉴权配置的时候就是通过这个url去判断该用户是否有对应权限的 5、构建UserDetails对象放入用户名、密码、security权限集合 6、返回构建好的UserDetails对象 //认证和授权逻辑 Service public class MyUserDetailsService implements UserDetailsService {DubboReference //需要使用到认证授权相关的mapper和serviceprivate AdminService adminService;Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {//根据用户名查询用户Admin admin adminService.findByUserName(username);if(admin null){throw new UsernameNotFoundException(用户未找到);}//根据用户名查询权限ListPermission permissions adminService.findAllPermission(username);//将我的权限集合转为security的权限集合ListGrantedAuthority grantedAuthorities new ArrayList();for (Permission permission:permissions) {//拿出权限中的url,方便日后的鉴权grantedAuthorities.add(new SimpleGrantedAuthority(permission.getUrl()));}UserDetails userDetails User.withUsername(admin.getUsername()).password(admin.getPassword()).authorities(grantedAuthorities).build();return userDetails;} }5、编写鉴权配置         1、在启动类上方开启注解配置访问权限 SpringBootApplication(exclude DataSourceAutoConfiguration.class)EnableGlobalMethodSecurity(prePostEnabled true) public class ShoppingManagerApiApplication {     public static void main(String[] args) {         SpringApplication.run(ShoppingManagerApiApplication.class, args);     } }           2、在相关控制器上方添加注解配置需要有的权限 /**      * 分页查询管理员      * param page 页数      * param size 每页条数      * return vo      */    PreAuthorize(hasAnyAuthority(/admin/search))     GetMapping(/search)     public BaseResultPageAdmin search(int page,int size){         PageAdmin adminPage adminService.search(page, size);         return BaseResult.ok(adminPage);     } 通过这个注解就会自动判断当前登录的用户是否有/admin/search权限这些权限的url都是我们在认证和授权逻辑的时候放入的 6、使用不同权限的用户登录查看他们是否能访问这些接口
http://www.pierceye.com/news/34534/

相关文章:

  • 网站的具体内容wordpress文章搜索
  • 不到网站是为什么金华高端网站建设公司
  • 网站做提示框网站设计制作在哪能看
  • 做相册的网站 网易兰州seo技术优化排名公司
  • 360如何做网站优化网站开发注册流程以及收费
  • 企业级网站内容管理系统品牌网站建设渠道
  • 福田的网站建设公司能自己做游戏的软件
  • 响应式网站建设服务商无极网站无极城市在线
  • 查企业年报的网站WordPress文章字号设置
  • 服装网上商城网站建设报告网页制作技术实训报告
  • wordpress网站代码优化温州企业网站开发
  • 网站的推广运营网站前台后台模板下载
  • 网站设计广州项目推广平台排行榜
  • 广州 美容 公司 网站建设项目网络技术
  • 深圳网站建设黄浦网络-骗钱网站建设公司选择意见书
  • 怎样做网站店铺ie6 网站模板
  • 郑州专业建网站专业制作网站哪家好
  • 东莞网站关键排名商城网站建设模板
  • 做仪表行业推广有哪些网站免费做链接的网站吗
  • 网站开发申请报告如何在公司服务器建个内部 网站
  • 网站建设首选沈阳高端网站建设gta5网站建设中
  • 聚名网域名怎么过户给公司河南网站开发优化
  • wordpress域名网站搬家手机网站数据加载
  • 适合高中生做网站的主题建设vip视频解析网站违法吗
  • 网络推广渠道有哪些方式seo公司 引擎
  • 机械行业网站建设制作开发方案海南网站建设费用
  • 会HTML怎么做网站wordpress前端文章编辑器
  • 河南省城乡和住房建设厅网站东莞网站建设网站建设
  • 长沙网站建设网软件服务商
  • 电子商务网站建设与管理 学习感想公司网站建设模块