shiro权限管理

参考:https://blog.csdn.net/qq_39874546/article/details/79081950

https://www.cnblogs.com/moonlightL/p/8126910.html

1. Shiro入门

ApacheShiro是一个功能强大且易于使用的Java安全框架,提供了认证,授权,加密,和会话管理。

Shiro有三大核心组件:

Subject:即当前用户,在权限管理的应用程序里往往需要知道谁能够操作什么,谁拥有操作该程序的权利,shiro中则需要通过Subject来提供基础的当前用户信息,Subject 不仅仅代表某个用户,与当前应用交互的任何东西都是Subject,如网络爬虫等。所有的Subject都要绑定到SecurityManager上,与Subject的交互实际上是被转换为与SecurityManager的交互。

SecurityManager:即所有Subject的管理者,这是Shiro框架的核心组件,可以把他看做是一个Shiro框架的全局管理组件,用于调度各种Shiro框架的服务。作用类似于SpringMVC中的DispatcherServlet,用于拦截所有请求并进行处理。

Realm:Realm是用户的信息认证器和用户的权限人证器,我们需要自己来实现Realm来自定义的管理我们自己系统内部的权限规则。SecurityManager要验证用户,需要从Realm中获取用户。可以把Realm看做是数据源。

2. 依赖

 <!--shiro核心类库-->
    <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-core</artifactId>
        <version>1.2.3</version>
    </dependency>

3.过滤器解释

 1 /admins/**=anon               # 表示该 uri 可以匿名访问
 2 /admins/**=auth               # 表示该 uri 需要认证才能访问
 3 /admins/**=authcBasic         # 表示该 uri 需要 httpBasic 认证
 4 /admins/**=perms[user:add:*]  # 表示该 uri 需要认证用户拥有 user:add:* 权限才能访问
 5 /admins/**=port[8081]         # 表示该 uri 需要使用 8081 端口
 6 /admins/**=rest[user]         # 相当于 /admins/**=perms[user:method],其中,method 表示  get、post、delete 等
 7 /admins/**=roles[admin]       # 表示该 uri 需要认证用户拥有 admin 角色才能访问
 8 /admins/**=ssl                # 表示该 uri 需要使用 https 协议
 9 /admins/**=user               # 表示该 uri 需要认证或通过记住我认证才能访问
10 /logout=logout                # 表示注销,可以当作固定配置
注意:

anon,authcBasic,auchc,user 是认证过滤器。

perms,roles,ssl,rest,port 是授权过滤器。

 

posted @ 2018-10-10 20:31  帅的很耗cpu  阅读(293)  评论(0编辑  收藏  举报