MVC框架-mentawai(9)

授權

授權通常會在認證後進行,意味着誰可以訪問什麼。 Mentawai採用簡單有效的方法進行用戶授權。在Mentawai中,你可以告訴框架一個授權用戶屬於那些組,以便於稍後web應用根據這些信息判斷哪些訪問該接受還是拒絕。例如,你可能有些action必須需要ADMIN組纔可以訪問,對JSP頁同樣如此。 更有趣的是,一個JSP頁面可能對某些用戶隱藏一塊或一部分。

告訴框架用戶屬於哪個組:

public class LoginAction extends BaseLoginAction {

   @Override
   public String execute() {

      // (...)

      setSessionObj(u);

      setSessionGroups(u.getGroup());

      setSessionLocale(u.getLocale());

      return SUCCESS;

   }
}

你可以在setSessionGroups方法中傳一到多個字符串(”admin”, “editor”, “guest”, 等)。它的參數是可變參數。此外,你也可以傳遞一個到多個枚舉類 (Group.ADMIN, Group.EDITOR, Group.GUEST, 等)。

授權一個action只對某些組有效:

action("/User", UserAction.class, "edit")
    .authorize(Group.ADMIN, Group.MASTER)
    .on(ACCESSDENIED, exception("Only admin and master can modify a user!"))
    .on(ERROR, fwd("/jsp/user/edit.jsp"))
    .on(SHOW, fwd("/jsp/user/edit.jsp"))
    .on(UPDATED, fwd("/jsp/index.jsp"));

NOTE: 上述第二行等同於 .authorize(“ADMIN”, “MASTER”)

授權實際上是一個被實現的過濾器,一旦授權失敗,就會返回一個ACCESSDENIED的結果。這個結果配置後,就會拋出有信息提示的異常結果。

TIP: 除了拋出異常, 你也可以配置 ACCESSDENIED 結果重定向到一個友好頁,用來對用戶解釋用戶無權訪問該action 。

一個JSP頁只授權給某些組:

<%@ page contentType="text/html; charset=UTF-8"%>
<%@taglib prefix="mtw" uri="http://www.mentaframework.org/tags-mtw/"%>

<mtw:requiresAuthorization groups="ADMIN, MASTER" />

NOTE: 無論你在應用配置中心對ACCESSDENIED配置的結果如何,在此都將是如此。

一個JSP頁面的部分授權給某些組:

<%@ page contentType="text/html; charset=UTF-8"%>
<%@taglib prefix="mtw" uri="http://www.mentaframework.org/tags-mtw/"%>

<mtw:hasAuthorization groups="ADMIN, MASTER">
Only authorized people can see this.
</mtw:hasAuthorization>

TIP: 你可以在上述標籤上使用屬性negate=”true” 來反轉條件,因此你可以輕易實現類似於else 式的聲明。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章