开发者社区> 问答> 正文

关于Rest风格的API的如何做权限控制

想要实现的效果是
比如如下两个接口
GET /order/{orderId}

POST /order/{orderId}/abc/{abcId}

想通过不同的角色或用户来分别限制他们能访问接口的某一个,即拥有权限的一个
现在的问题就是,通过什么样的方式能够将URL和上面的接口路径分别匹配上呢?
使用的是SpringMVC。
注:上面写的接口URL只是简单的,还有复杂的里面参数可以是正则表达式,或者两个参数通过特定字符串拼接的(如{param1}-{param2},所以匹配路径不能用正则来做,这块不太了解SpringMVC的底层是如何实现的,求大神解答。

展开
收起
蛮大人123 2016-03-11 10:05:41 3124 0
2 条回答
写回答
取消 提交回答
  • 解决方案1: http base 认证!!!! 解决方案2: 你用laravel不就好了 解决方案3: 可以自己写一个方法 解决方案4: 楼主可以去学习一下shiro框架, 具体可以看这里, 非常不错的教程, 入门也简单, 这个框架可以解决你的问题.http://jinnianshilongnian.iteye.com/blog/2018398 配合spring mvc使用起来就像是这样
    2019-07-17 18:58:29
    赞同 展开评论 打赏
  • 我说我不帅他们就打我,还说我虚伪

    你必須要用實作 WebSecurityConfigurerAdapter
    以我所知Spring security基礎的登入是User跟Role.
    每一個URL都可以通過實作 WebSecurityConfigurerAdapter的 configure(WebSecurity web)控制的。
    比如以下的例子帳戶在內存,登入后各資源根制可以用上hasRole()限制:

            
    @EnableWebSecurity
    @Configuration
    public class CustomWebSecurityConfigurerAdapter extends
       WebSecurityConfigurerAdapter {
      @Autowired
      public void configureGlobal(AuthenticationManagerBuilder auth) {
        auth
          .inMemoryAuthentication()
            .withUser("user")  // #1
              .password("password")
              .roles("USER")
              .and()
            .withUser("admin") // #2
              .password("password")
              .roles("ADMIN","USER");
      }
    
      @Override
      public void configure(WebSecurity web) throws Exception {
        web
          .ignoring()
             .antMatchers("/resources/**"); // #3
      }
    
      @Override
      protected void configure(HttpSecurity http) throws Exception {
        http
          .authorizeUrls()
            .antMatchers("/signup","/about").permitAll() // #4
            .antMatchers("/admin/**").hasRole("ADMIN") // #6
            .anyRequest().authenticated() // 7
            .and()
        .formLogin()  // #8
            .loginUrl("/login") // #9
            .permitAll(); // #5
      }
    }
    2019-07-17 18:58:29
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
CUDA MATH API 立即下载
API PLAYBOOK 立即下载
传统企业的“+互联网”-API服务在京东方的实践 立即下载