文档章节

Shiro 小笔记

壹贰叁
 壹贰叁
发布于 2016/11/09 20:29
字数 425
阅读 17
收藏 0

`
shiro.ini

[main]
# 没有登入的用户 跳转到 /login url
authc.loginUrl=/login
# 不是这个角色 或者权限所调整的页面
roles.unauthorizedUrl=page/err.jsp
perms.unauthorizedUrl=page/err.jsp
[users]
admin=123,admin,user
guan=123,user
tome=333,student
jocke=321,teacher
test=123
test1=123
[roles]

# admin 角色拥有 user , student , teacher 的操作权限
admin=user:*,student:*,teacher:*
# teacher 角色拥有student,teacher的角色所有操作权限
teacher=student:*,teacher:*
# student 角色拥有student 的所有操作权限
student:student:*
[urls]
#login 这个url 不需要身份认证
/login=anon
# 访问admin url 需要身份认证
/admin=authc
# ?匹配一个字符 /admin1  /adminx
/admin?=autch
# *匹配多个或者零个字符 lg : /admin1  /admin1as
/admin*
# /** 匹配多路径的url  lg : /admin/a   /admin/a/b
/admin/**
# 访问 student url 需要 teacher 这个角色才行
/student=roles[teacher]
# 访问teacher url 需要有 user 的create 这个权限才行
/teacher=perms["user:create"]

jsp

<strong>
  登入成功~~
  ${username}
   <!-- 查看是否拥有该角色 -->
    <shiro:hasAnyRoles name="admin">
        欢迎 你 admin  管理者 <shiro:principal/>
    </shiro:hasAnyRoles>
    <br>
    <!-- 查看是否拥有该权限 -->
    <shiro:hasPermission name="student:select">
        拥有 student:select 查询权限的 用户 <shiro:principal/>
    </shiro:hasPermission>
    <br>
    ${info}
</strong>

servlet

package core.java.controller.servlet;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.Subject;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;


public class LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //doPost(req,resp);
        System.out.println("doing do get");
        req.getRequestDispatcher("page/login.jsp").forward(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      //  super.doPost(req, resp);
        System.out.println("doing do post ~~~");
        String username = req.getParameter("userName");
        String password = req.getParameter("password");
        UsernamePasswordToken token = new UsernamePasswordToken(username,password);
        Subject user = SecurityUtils.getSubject();
        try{
           user.login(token);
            // 登入后可以获得到session
            Session session = user.getSession();
            System.out.println("Host:"+session.getHost());
            System.out.println("sessionId:"+session.getId());
            System.out.println("Timeout:"+session.getTimeout());
            System.out.println("AttributeKeys:"+session.getAttributeKeys());
            System.out.println("StartTimestamp:"+session.getStartTimestamp());

            // 设置session 参数
            session.setAttribute("info","session 专属参数");
            req.setAttribute("username",username);
         //   resp.sendRedirect("page/success.jsp");
            req.getRequestDispatcher("page/success.jsp").forward(req,resp);

        }catch (Exception e){
            e.printStackTrace();
            req.getRequestDispatcher("page/login.jsp").forward(req,resp);
        }
    }
}

`

© 著作权归作者所有

下一篇: poi 导出excl
壹贰叁
粉丝 3
博文 14
码字总数 3725
作品 0
武汉
程序员
私信 提问
Spring+Shiro+CAS整合配置笔记

一、前言 Apache Shiro与Spring Security一样是Java的一个安全框架。那为什么与Spring整合却用Shiro?不要问为什么,任性!开个玩笑:D 其实我个人是认为Spring Security太过于笨重,要写太多...

qllinhongyu
2014/12/09
0
0
[Zeppelin]Zeppelin安装与初体验

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SunnyYoona/article/details/72869094 1.安装 1.1 下载 点击进入下载页面 备注 下载页面会提供两种二进制包:...

sjf0115
2017/06/05
0
0
apache-shiro 学习笔记

(一) 看到SpringSide4居然也用shiro作为安全框架,不是用的spring-security。着实有点惊讶。 apache-shiro的强大可见一斑。 (二) apache-shiro依赖的包 除此之外还有一些东西也不可少spring,...

dmrs
2015/10/18
72
0
spring +quartz maven配置

quartz做定时任务,之前使用过,但是当时没有做笔记,导致又折腾了一点时间由于使用的是spring+hibernate的项目,使用maven管理包maven配置如下: work0 0 0/12 ? class="org.springframewor...

zph-alan
2016/09/22
127
0
Shiro权限管理笔记

一.用户身份认证 身份认证,就是判断一个用户是否为合法用户的处理过程。最常用的简单身份认证方式是系统通过核对用户输入的用户名和口令,看其是否与系统中存储的该用户的用户名和口令一致,...

Mr_欢先生
2017/11/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

linux 磁盘不足异常

linux 报 No space left on device 异常 ,则是磁盘不足 ,导致异常 运行 df -h 命令查询磁盘使用率,如果有100%,则查找目录大日志文件删除 1.磁盘不足导致系统应用写入文件失败,如系统日志...

zaolonglei
40分钟前
3
0
即学即用的 30 段 Python 实用代码

☞ 分享:最全最新的Python学习大礼包 ☜ 点击查看 编译:Pita & AI开发者,作者:Fatos Morina Python是目前最流行的语言之一,它在数据科学、机器学习、web开发、脚本编写、自动化方面被许...

Object_Man
41分钟前
5
0
The server time zone value 'EDT' is unrecognized or represents more than one time zone.

2019-10-14 18:07:43.714 ERROR 74363 --- [Druid-ConnectionPool-Create-1855026648] com.alibaba.druid.pool.DruidDataSource : create connection SQLException, url: jdbc:mysql://10.30......

yizhichao
54分钟前
8
0
html加载顺序以及影响页面二次渲染额的因素

本文转载于:专业的前端网站➱html加载顺序以及影响页面二次渲染额的因素 浏览器请求发往服务器以后,返回HTML页面,页面内容开始渲染,具体的执行顺序为: 1. 浏览器开始载入html代码,发现<...

前端老手
57分钟前
9
0
BeginnersBook JSP、JSTL、Servlet 教程

来源:ApacheCN BeginnersBook 翻译项目 译者:飞龙 协议:CC BY-NC-SA 4.0 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 请您勇敢地去翻译和改进翻译。虽然我们追求卓越,但我们并...

ApacheCN_飞龙
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部