各位前輩你們好~
最近在更版一支系統,
遇到的問題是在登入與註冊頁面切換時,
都需要案 F5 重整才能順利刷新頁面,
想請問有經驗的前輩這是什麼問題?
我是在 Controller/HomeController.cs 下 [Authorize] 強制轉址至 Login Page
HomeController
[Authorize]
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
return View();
}
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
}
所以在 Web.config 中加 Account 的過濾,執行網頁時就會到 Account/Login page,而不會被到 base page:
Web.config
<rewrite>
<rules>
<rule name="AngularJS Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_URI}" pattern="^/(API)" negate="true" />
<add input="{REQUEST_URI}" pattern="^/(Account)" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
<modules>
但是只要點選 Login page 中的註冊 url : Account/Register,
url 會變,但是畫面不會變…
需自己案 F5 才會刷新頁面。
另外因為 AngularJS 的關係,
Home 的 View 已經被 轉掉了,
所以我才想搭配 url rewrite 去執行登入和註冊的部分,
但發現頁面不會刷新
再麻煩各位幫忙看一下是否是規則我有誤解了
所以你是有一個 AccountController ?
裡面有一個 Register 的頁面?
那你有在Debug模式下執行嗎?
轉頁的時候有跑到後端Controller中嗎?
兩個頁面的功能都正常,就只是按下連結無法順利執行頁面,我不太確定是 rewrite 的問題還是是 AngularJS 的問題
無解的話可能就要比較麻煩一點,不能直接透過[Authorize]綁住登入頁面。
在 Controller 中 Register 下中斷的話,案網頁網址的當下沒反應,要再按 F5 才會停。
這不就很明顯沒有跑到後端嗎?
如果這不符合你的需求,
那就不能用這種方式了.
另外Angular是屬於前端語言,
如果要在Angular底下執行判斷的話,
乾脆全部都交給Angular,
後端純粹提供API就好了.
(我沒有在用Anthorize的方式,
不過Anthorize應該是屬於後端的,
或許API接收到請求的時候,
先透過Anthorize的機制判斷是否登入,
再決定要傳送什麼資料給前端)
這不就很明顯沒有跑到後端嗎?
一語點醒夢中人
之前的確都是純 Angular 做相關頁面,
因為最近爬文看到 MVC 的驗證好像挺方便,
想說改寫看看XD
我觀念還是得再加強一下