前提: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裡面判斷他的角色身份再确定做什麼事,這樣就很友善而且很個性化拉!
(請您對文章做出評價)