天天看點

forms角色驗證,以普通使用者身份登陸管理頁面先彈出警告資訊視窗

前提:forms驗證角色.

a.aspx:普通使用者角色許可頁面

b.aspx:管理者角色許可頁面

一普通使用者登陸到a.aspx,而a.aspx裡面有個連接配接進入b.aspx,如果此使用者點了這個連接配接想進入

b.aspx,

但是因為這個使用者不是管理者角色,是以系統就會把他導向到login.aspx

我希望的在導向到login.aspx的前面彈出個資訊框啊,說明他所在的使用者組沒有這個權限要他

先登陸,或者彈出資訊框後不導向到login.aspx,而是直接history.back();

不知道可以實作麼?

應該怎麼樣實作

懇請高人能夠指點下!!

剛剛就這個問題和快樂,tp,jyk,yiyanxiyin,那個頭。。。。等朋友在群裡讨論,他們提出這樣解決,在web.config裡面把loginUrl設定成一個中間頁面c.htm,裡面就隻有彈出資訊視窗的腳本和導向到login.aspx的腳本,這個方法很好,但是我想有點麻煩而且不個性化,因為這樣無論使用者是不是登陸了都會這樣,不好,吃飯的時候我想了下,得到另外種解決辦法,如下:

首先修改web.config:

<location path="admins">

<system.web>

<authorization>

<!-- Order and case are important below -->

<deny users="?"/>

</authorization>

</system.web>

</location>

他的意思是在admins下面的檔案拒絕匿名使用者通路,也就是說你隻要是個登陸了的使用者都可以通路,不管你是什麼角色都可以,這樣的話我們就可以在b.aspx的page-load裡面來判斷角色進行操作了

為什麼以前不能夠這樣呢?因為我以前的web.config代碼這樣:

<allow roles="Administrator"/>

<deny users="*"/>

他的意思是隻有Administrator角色才能夠通路admins目錄下的檔案,于是其他的使用者角色一通路這裡的頁面他首先根本就不會執行b頁面裡的page_load事件而是直接跑大login.aspx裡面去拉

下面再寫adminis目錄下的b.aspx裡面的代碼如下,是背景檔案代碼

private void Page_Load(object sender, System.EventArgs e)

  {

   // 在此處放置使用者代碼以初始化頁面

   if(!IsPostBack)

   {

    if(!HttpContext.Current.User.IsInRole("Administrator"))

    {

     //Response.End();

       //Page.RegisterStartupScript("","<script>alert('你沒有這個權限!');history.back();</script>");

        Response.Write("<script>alert('美女,你沒有這個權限啊!');history.back();</script>");

     Response.End();

    }

   }

  }

呵呵,這樣的話在b裡面判斷他的角色身份再确定做什麼事,這樣就很友善而且很個性化拉!

(請您對文章做出評價)

繼續閱讀