MFC怎么设置不同用户的不同用户权限,下面的情况具体要怎么做

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC怎么设置不同用户的不同用户权限,下面的情况具体要怎么做相关的知识,希望对你有一定的参考价值。

这个是登陆函数,登陆后有“员工管理”和“部门管理”,如何改写登陆函数,使普通用户登录后只可点击“员工管理”,而“部门管理”控件为灰,不可点击。但以管理员身份登陆就可以修改这两个。你要在类CMainDlg 的初始化函数中加上判断,如果user是普通用户就把“部门管理”按钮变灰
具体要怎么做?

根据需要添加几个成员变量,然后查询数据库得到权限,根据权限设置成员变量的值,在主界面的初始化函数里面根据成员变量值设置哪些按钮禁用,禁用可使用enablewindow函数,当然像楼上隐藏了也是可以的 参考技术A 用一个全局变量,或者给CMainDlg一个静态成员变量。这样在登陆以后,直接根据用户类型对变量进行设置。然后在初始化函数中判断变量EnableWindow是TRUE还是FALSE

Spring Security(一)

即使没有任何网站登录验证功能编码基础的人,也能想出下面的这个功能需求:

  1. 网站分为首页、登录页、用户页面、管理员页面和报错页面;
  2. 使用用户名加密码登录,登录错误要报错;
  3. 不同的用户拥有不同的权限,不同的权限可以访问不同的网页;
  4. 首页和登录页不需要任何权限;
  5. 用户页面需要USER权限;
  6. 管理员页面需要ADMIN权限;
  7. 如果用户没有登录,则访问需要权限的页面时自动跳转登录页面。


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怎么设置不同用户的不同用户权限,下面的情况具体要怎么做的主要内容,如果未能解决你的问题,请参考以下文章

SVN权限设置两种方法有啥不同?

oracle数据库控制已建表在不同用户下拥有不同权限

一台 Mac,多个用户

如何分配每个用户在不同条件下访问项目?

【umask】关于umask值及其对应的文件权限

Java多权限如何控制页面功能