MFC怎么设置不同用户的不同用户权限,下面的情况具体要怎么做
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC怎么设置不同用户的不同用户权限,下面的情况具体要怎么做相关的知识,希望对你有一定的参考价值。
这个是登陆函数,登陆后有“员工管理”和“部门管理”,如何改写登陆函数,使普通用户登录后只可点击“员工管理”,而“部门管理”控件为灰,不可点击。但以管理员身份登陆就可以修改这两个。你要在类CMainDlg 的初始化函数中加上判断,如果user是普通用户就把“部门管理”按钮变灰
具体要怎么做?
Spring Security(一)
即使没有任何网站登录验证功能编码基础的人,也能想出下面的这个功能需求:
- 网站分为首页、登录页、用户页面、管理员页面和报错页面;
- 使用用户名加密码登录,登录错误要报错;
- 不同的用户拥有不同的权限,不同的权限可以访问不同的网页;
- 首页和登录页不需要任何权限;
- 用户页面需要USER权限;
- 管理员页面需要ADMIN权限;
- 如果用户没有登录,则访问需要权限的页面时自动跳转登录页面。
1. AuthenticationManagerBuilder 身份验证管理器生成器(那意思就是:生成一个身份验证管理器)
2. BCryptPasswordEncoder 密码编码器(BCrypt跨平台文件加密工具,BCryptPasswordEncoder就是一种加密手法)
3.inMemory在内存中
@Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { /** * 在内存中创建一个名为 "user" 的用户,密码为 "pwd",拥有 "USER" 权限,密码使用BCryptPasswordEncoder加密 */ auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder()) .withUser("user").password(new BCryptPasswordEncoder().encode("pwd")).roles("USER"); /** * 在内存中创建一个名为 "admin" 的用户,密码为 "pwd",拥有 "USER" 和"ADMIN"权限 */ auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder()) .withUser("admin").password(new BCryptPasswordEncoder().encode("pwd")).roles("USER","ADMIN"); }
4.permitAll():允许所有用户访问,不需要任何权限
authorize:授权;批准 authorizeRequests()授权请求
/** * 匹配 "/","/index" 路径,不需要权限即可访问 * 匹配 "/user" 及其以下所有路径,都需要 "USER" 权限 * 匹配 "/admin" 及其以下所有路径,都需要 "ADMIN" 权限 * 登录地址为 "/login",登录成功默认跳转到页面 "/user" * 退出登录的地址为 "/logout",退出成功后跳转到页面 "/login" */ @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/","/index","/error").permitAll() .antMatchers("/user/**").hasRole("USER") .antMatchers("/admin/**").hasRole("ADMIN") .and() .formLogin().loginPage("/login").defaultSuccessUrl("/user") .and() .logout().logoutUrl("/logout").logoutSuccessUrl("/login"); }
5.
完整代码:
/** * Author: wxb * Project: spring_security_example * Create Date: 2018/10/18 * Create Time: 17:36 * Description: Security 配置类 */ @EnableWebSecurity public class SecurityConfiguration extends WebSecurityConfigurerAdapter { @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { /** * 在内存中创建一个名为 "user" 的用户,密码为 "pwd",拥有 "USER" 权限,密码使用BCryptPasswordEncoder加密 */ auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder()) .withUser("user").password(new BCryptPasswordEncoder().encode("pwd")).roles("USER"); /** * 在内存中创建一个名为 "admin" 的用户,密码为 "pwd",拥有 "USER" 和"ADMIN"权限 */ auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder()) .withUser("admin").password(new BCryptPasswordEncoder().encode("pwd")).roles("USER","ADMIN"); } /** * 匹配 "/","/index" 路径,不需要权限即可访问 * 匹配 "/user" 及其以下所有路径,都需要 "USER" 权限 * 匹配 "/admin" 及其以下所有路径,都需要 "ADMIN" 权限 * 登录地址为 "/login",登录成功默认跳转到页面 "/user" * 退出登录的地址为 "/logout",退出成功后跳转到页面 "/login" */ @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/","/index","/error").permitAll() .antMatchers("/user/**").hasRole("USER") .antMatchers("/admin/**").hasRole("ADMIN") .and() .formLogin().loginPage("/login").defaultSuccessUrl("/user") .and() .logout().logoutUrl("/logout").logoutSuccessUrl("/login"); } }
1
以上是关于MFC怎么设置不同用户的不同用户权限,下面的情况具体要怎么做的主要内容,如果未能解决你的问题,请参考以下文章