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

网站后台改不了设置做电脑网站

网站后台改不了设置,做电脑网站,用什么程序做视频网站,网站培训公司我们使用这个springSecurity安全框架,作用是认证,授权,将用户的权限和对应的资源进行绑定,默认的是在内存中保存的,实际开发中,是需要根据项目业务的需求对某些方法进行重写,使数据库中权限对应的资源进行绑定,就是查看当前登录的用户所扮演的角色,该角色有哪些权限 授权 1内…我们使用这个springSecurity安全框架,作用是认证,授权,将用户的权限和对应的资源进行绑定,默认的是在内存中保存的,实际开发中,是需要根据项目业务的需求对某些方法进行重写,使数据库中权限对应的资源进行绑定,就是查看当前登录的用户所扮演的角色,该角色有哪些权限 授权 1内存交互资源绑定 这是框架默认的绑定方式,根据业务需求可以重写某些方法,连接数据库,进行交互进行资源绑定 inMemoryAuthentication 1创建一个SpringBoot项目 2配置类MySecurityConfig package com.aaa.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;Configuration public class MySecurityConfig extends WebSecurityConfigurerAdapter {//加密Beanpublic PasswordEncoder passwordEncoder() {return new BCryptPasswordEncoder();//新建密码加密器}Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {//内存交互auth.inMemoryAuthentication().withUser(zhangsan).password(passwordEncoder().encode(123456)).roles(admin).authorities(user:query, user:delete, user:update, user:insert)//手动设置的用户权限绑定资源,有4个权限.and().withUser(lisi).password(passwordEncoder().encode(123456)).roles(test).authorities(user:query, user:export)//有两个权限;}Overrideprotected void configure(HttpSecurity http) throws Exception {//登录前http.formLogin().loginPage(/login.html).loginProcessingUrl(/mylogin).successForwardUrl(/success).failureUrl(/fail.html) // 直接指向一个HTML页面.permitAll();//登录后http.exceptionHandling().accessDeniedPage(/403.html);//禁止2跨域伪造请求的验证http.csrf().disable();http.authorizeRequests().anyRequest().authenticated();} }3添加注解 EnableGlobalMethodSecurity(prePostEnabled true)//开启安全框架注解4在controller层加注解 在对应的方法上加注解 PreAuthorize(valuehasAnyAuthority(user:query)) package com.aaa.controller; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; RestController public class MyUserController {GetMapping(query)PreAuthorize(valuehasAnyAuthority(user:query))public String query(){System.out.println(访问查询资源);return 查询资源;}GetMapping(delete)PreAuthorize(value hasAuthority(user:delete))public String delete(){System.out.println(访问删除资源);return 删除资源;}GetMapping(update)PreAuthorize(value hasAuthority(user:update))public String update(){System.out.println(访问修改资源);return 修改资源;}GetMapping(insert)PreAuthorize(value hasAuthority(user:insert))public String insert(){System.out.println(访问添加资源);return 添加资源;}GetMapping(export)PreAuthorize(value hasAuthority(user:export))public String export(){System.out.println(访问导出资源);return 导出资源;} }2与数据库交互进行权限的资源绑定 1添加依赖 !--添加依赖--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-security/artifactIdversion2.6.13/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.33/version/dependencydependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.5.4/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.26/version/dependency 2写属性文件 加载资源文件 3创建dao层和entity(实体类) 举一个接口和一个实体类例子 user-role-permission, 从用户表到角色表,再到权限表 sys_user---sys_user_role---sys_role_permission---sys_permission mybatis-plus先根据条件(用户的名)从用户表sys_user筛选,获取用户id, 然后拿着用户的id从用户角色表sys_user_role获取到用户所对应的roleid, 接着拿着roleid从角色权限表sys_role_permission获取permissionid, 再拿着权限id,(permissionid)到权限表sys_permission里获取所有全部权限信息, 最后绑定到用户上 sql语句 select DISTINCT sys_permission.* from sys_permission join sys_role_permission  on sys_permission.peridsys_role_permission.perid join sys_user_role  on sys_role_permission.roleidsys_user_role.roleid where sys_user_role.userid#{userid} 4 写自己的业务层 根据业务需求,重写框架的某些默认方法,进行权限绑定 package com.aaa.service;import com.aaa.dao.PermissionDao; import com.aaa.dao.UserDao; import com.aaa.entity.Permission; import com.aaa.entity.User; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.springframework.beans.factory.annotation.Autowired;import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service;import java.util.ArrayList; import java.util.Collection; import java.util.List;Service public class MyUserDetailService implements UserDetailsService {Autowiredprivate UserDao userDao;Autowiredprivate PermissionDao permissionDao;Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {//完成根据账户查询数据库即可QueryWrapperUser queryWrapper new QueryWrapper();queryWrapper.eq(username,username);User user userDao.selectOne(queryWrapper);if(user!null){//permissions集合,源类型的集合,源集合---目标类型的集合转换ListPermission permissions permissionDao.selectByUserId(user.getUserid());//空的SimpleGrantedAuthority类型的数组,目标类型的集合CollectionSimpleGrantedAuthority authorities new ArrayList();for (Permission per:permissions) {//把permissions集合里的东西拿出来,放到空集合里SimpleGrantedAuthority simpleGrantedAuthority new SimpleGrantedAuthority(per.getPercode());authorities.add(simpleGrantedAuthority);}org.springframework.security.core.userdetails.User userDetail new org.springframework.security.core.userdetails.User(user.getUsername(),user.getUserpwd(),authorities);return userDetail;}return null;}}5再配置类MySecurityConfig 用自己写的业务替换掉框架给的 package com.aaa.config; import com.aaa.service.MyUserDetailService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;Configuration public class MySecurityConfig extends WebSecurityConfigurerAdapter {Autowiredprivate MyUserDetailService myUserDetailService;Beanpublic PasswordEncoder passwordEncoder() {return new BCryptPasswordEncoder();}Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {//数据库交互auth.userDetailsService(myUserDetailService);//内存交互 // auth.inMemoryAuthentication() // .withUser(zhangsan) // .password(passwordEncoder().encode(123456)) // .roles(admin) // .authorities(user:query,user:delete,user:update,user:insert) // .and() // .withUser(lisi) // .password(passwordEncoder().encode(123456)) // .roles(test) // .authorities(user:query,user:export)//;}Overrideprotected void configure(HttpSecurity http) throws Exception {http.formLogin().loginPage(/login.html).loginProcessingUrl(/mylogin).successForwardUrl(/success).failureUrl(/fail.html) // 直接指向一个HTML页面.permitAll(); // http.authorizeRequests() // .antMatchers(/query).hasAnyAuthority(user:query) // .antMatchers(/delete).hasAnyAuthority(user:delete) // .antMatchers(/update).hasAnyAuthority(user:update) // .antMatchers(/insert).hasAnyAuthority(user:insert) // .antMatchers(/export).hasAnyAuthority(user:export);http.exceptionHandling().accessDeniedPage(/403.html);//禁止2跨域伪造请求的验证http.csrf().disable();http.authorizeRequests().anyRequest().authenticated();} }总结 根据业务需求调用自己的业务层(自己写的),去代替框架的部门业务实现需求
http://www.pierceye.com/news/220150/

相关文章:

  • 东莞建设质监网站建设网站方式有哪些
  • 中学网站建设书最好的网站设计开发公司
  • 下载网站源码聊城seo培训
  • 专用于做网站公司推广的方式有哪些
  • 网站如何规划c 手机网站开发模板
  • 哈尔滨网站建设优化公司室内设计网站
  • 厚街做网站的公司wordpress出现百度抓取404页面
  • 四川南充网站建设西安网站建设推广优化
  • 做企业门户网站都连连电商网站开发公司
  • 微商城网站建设价位公司要想做个网站这么弄
  • wordpress文章所属栏目关键词排名优化易下拉教程
  • 网站主题咋做免费网页模板素材网站
  • 网站建设对旅游意义公众号运营策划
  • 成都专业网站制作关于论文网站开发参考文献
  • 免费做代理郑州seo招聘
  • 做网站系统更新后wordpress
  • 兰州网站建站2024免费网站推广
  • 深圳模板建站企业网站出现搜索
  • app开发网站模板该网站正在紧急升级维护中
  • 公众号编辑器365保定seo推广
  • 陕西整站关键词自然排名优化外贸获客渠道有哪些
  • 网站策划需要具备什么福州高端建站
  • 域名注册没有网站美食网页设计素材图片
  • wordpress网站在哪里修改密码ps做网站要求高吗
  • 企业网站带商城源码Audiology wordpress
  • 星月教你做网站东营城乡建设局官网
  • 镇江网站建设开发旺店通erp系统
  • 体育直播网站建设深圳制作小程序
  • 手机微信管理系统搜索引擎优化的流程是什么
  • 壁纸公司网站源码做网站价格表