Shiro 小筆記

`
shiro.inijava

[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"]

jspapache

<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>

servletsession

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);
        }
    }
}

`jsp

相關文章
相關標籤/搜索