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

东莞樟木头做网站哪家好wordpress 微信 插件

东莞樟木头做网站哪家好,wordpress 微信 插件,wordpress 购买主题,佛山网站排名提升文末有本篇文章的项目源码可供下载学习 0.配置思路 在本项目案例的基础上进行相关的配置。在数据库中建立权限表/角色表/角色-权限表,并在用户表中加入role_id属性,与角色表进行关联生成相应的pojo层/mapper层文件修改UserDetailsServiceImpl.java中的loadUserByUsername方法…

文末有本篇文章的项目源码可供下载学习

0.配置思路

  1. 在本项目案例的基础上进行相关的配置。
  2. 在数据库中建立权限表/角色表/角色-权限表,并在用户表中加入role_id属性,与角色表进行关联
  3. 生成相应的pojo层/mapper层文件
  4. 修改UserDetailsServiceImpl.java中的loadUserByUsername方法,获取登录用户所对应的权限信息,并将权限信息放入到UserDetailsImpl中.
  5. 在需要权限验证的Controller方法中,利用@PreAuthorize注解,标注好对应的权限信息.
  6. 在SecurityConfig.java文件中开启注解支持.@EnableGlobalMethodSecurity(prePostEnabled = true)
  7. 进行相关测试.

1.数据库表操作

1.1权限表

1.2角色表

1.3角色-权限表

1.4修改用户表,将role_id属性加入到用户表中 

2. 新建pojo层/mapper层文件

/*** @TableName perm*/
@Data
public class Perm {private String id;private String name;private String permStr;
}
/*** @TableName role*/
@Data
public class Role {private String id;private String name;private String roleStr;}

新添roleId属性 

/*** @TableName user*/
@Data
public class User {private String id;private String username;private String password;private String currentFlag;private String roleId;
}
    <select id="findListByUserId" resultType="com.my.ssm.pojo.Perm">SELECT perm.*FROM user,user_role,role_perm,permWHERE user.id = #{userId}AND user.id=user_role.user_idAND user_role.role_id = role_perm.role_idAND role_perm.perm_id = perm.id</select>

3.修改UserDetailsServiceImpl.java,获取登录用户的权限信息

@Service
public class UserDetailsServiceImpl implements UserDetailsService {@Autowiredprivate UserMapper userMapper;@Autowiredprivate PermMapper permMapper;/*** SpringSecurity会调用UserDetailsService的loadUserByUsername方法验证用户名是否合法,合法用户将用户信息和用户权限信息封装到UserDetailsImpl对象中.* @param username* @return*/@Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException{
//        1.通过用户名查询User信息User user = userMapper.findUserByUsername(username);if (Objects.isNull(user)) {throw new RuntimeException("用户名不正确");}//2.查询用户的权限信息List<Perm> permList = permMapper.findListByUserId(user.getId());List<String> permStringList = new ArrayList<>();for (Perm perm : permList) {permStringList.add(perm.getPermStr());}//3.返回UserDetails接口的实现类对象return new UserDetailsImpl(user,permStringList);}
}

 4.修改UserDetailsImpl.java

@Data
@NoArgsConstructor
public class UserDetailsImpl implements UserDetails {private User user;private List<String> permissions;@JSONField(serialize = false)private List<GrantedAuthority> authorities;public UserDetailsImpl(User user, List<String> permissions) {this.user = user;this.permissions = permissions;}/*** 获取权限信息* @return*/@Overridepublic Collection<? extends GrantedAuthority> getAuthorities() {if (!Objects.isNull(authorities)) {return authorities;}// 将permissions授权信息封装到GrantedAuthority对象集合中authorities = new ArrayList<>();for (String permission : permissions) {SimpleGrantedAuthority authority = new SimpleGrantedAuthority(permission);authorities.add(authority);}return authorities;}/*** 获取密码信息* @return*/@Overridepublic String getPassword() {return this.user.getPassword();}/*** 获取用户名信息* @return*/@Overridepublic String getUsername() {return this.user.getUsername();}@Overridepublic boolean isAccountNonExpired() {return true;}@Overridepublic boolean isAccountNonLocked() {return true;}@Overridepublic boolean isCredentialsNonExpired() {return true;}@Overridepublic boolean isEnabled() {return true;}
}

5.在Controller方法中配置权限信息 

@RestController
@RequestMapping("customer")
public class CustomerController {@GetMapping("firstMethod")@PreAuthorize("hasAuthority('customerPermission')")public String firstMethod() {return "这是自定义Controller的第一个方法";}
}

6.开启权限注解的支持

@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {......
}

7.相关测试 

7.0准备数据

在role表中新增id为1的数据,并将lisi的role_id设置为1

 此时role_perm表为空表,说明任何角色都没有相应的权限

7.1登录,获取token

7.2访问自定义方法,发现被拒绝访问

 7.3将自定义方法的权限信息注释掉,再次访问自定义方法

 我们发现是可以访问的,说明权限信息的校验起效果了.

7.3在数据库中新添权限信息后访问

 

 将自定义Controller中的自定义方法上的权限信息取消注释

再次访问测试

 本篇文章的项目源码文件,可供点击下载学习 


文章转载自:

http://owEVBIHK.hbfqm.cn
http://xkxYJ5HA.hbfqm.cn
http://ywLtOfbR.hbfqm.cn
http://me7oNTrt.hbfqm.cn
http://haLh4kbR.hbfqm.cn
http://K7oKJixe.hbfqm.cn
http://0DKG7VtC.hbfqm.cn
http://kwxiMT89.hbfqm.cn
http://vX8qPWtz.hbfqm.cn
http://czkOpM2g.hbfqm.cn
http://Zz5c3TAN.hbfqm.cn
http://CP9qqBAj.hbfqm.cn
http://FVFNLLTJ.hbfqm.cn
http://O6OnR0EX.hbfqm.cn
http://AYe0ZsU1.hbfqm.cn
http://IC06OToP.hbfqm.cn
http://ClrcxeKf.hbfqm.cn
http://ntSoFYWr.hbfqm.cn
http://X9ROkQao.hbfqm.cn
http://J1Mflywn.hbfqm.cn
http://tpD8dT5X.hbfqm.cn
http://7DicSIaj.hbfqm.cn
http://JNI5KSCz.hbfqm.cn
http://4Nk14sxl.hbfqm.cn
http://4Yl0VJUo.hbfqm.cn
http://DPqUS1da.hbfqm.cn
http://9wDnatYu.hbfqm.cn
http://5lvEofHC.hbfqm.cn
http://M5dIZ5tU.hbfqm.cn
http://24v5cb6d.hbfqm.cn
http://www.dtcms.com/wzjs/637039.html

相关文章:

  • 网站做快照北票市建设工程安全管理站网站
  • 邯郸网站建设公司哪家好北京市建设局网站
  • 网站的关于页面wordpress精致博客主题
  • 什么网站可以免费做视频的软件具有口碑的柳州网站建设价格
  • 杨凌区住房和城乡建设局网站南京做网站的客户电话
  • a做爰网站自己建的网站有乱码
  • 菲律宾做网站好吗免费创建个人网站
  • 潍坊公司网站模板建站网络营销论文5000字
  • 婴儿用品网站模板微信官方商城小程序
  • 孝感网站建设效果南阳做网站seo的
  • 网站建设调查通知wordpress 众筹
  • 陶然亭网站建设旅游网站建设需求说明书
  • 景点网站开发积极意义怎样建设自己网站
  • 网站设计概述500字建设社区网站有什么借鉴之处
  • led动态视频网站建设两个域名同时指向一个网站
  • 为什么网站显示正在建设哪个网站做五金冲压的
  • 建立网站的主要流程有哪些步骤asp.net 4.0网站开发 下载
  • 经典网页传奇西安网站关键词优化费用
  • 建设教育网站怎么样千库网会员
  • 万站霸屏vs网站制作
  • 长春 网站 设计wordpress最近浏览
  • 如何进行网站分析企业宣传网站建设需求说明书
  • 不起眼的暴利小生意wordpress seo优化
  • 全屋整装家装佛山网站建设乐云seo在线制作
  • 好的设计logo网站社交网站的建设现状
  • 国际网站建设的目的哈尔滨市建设厅网站
  • 湖南省交通建设质安监督局网站wordpress 删除 加载中
  • 上海集团网站建设价格想在百度做网站
  • 官方网站的重要性中国门户网站排行
  • 网站开发经理岗位职责北京招聘网站开发