iT邦幫忙

0

ASP.NET MVC with AngularJS - 登入與註冊 Url Rewrite 疑問

各位前輩你們好~

最近在更版一支系統,
遇到的問題是在登入與註冊頁面切換時,
都需要案 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 去執行登入和註冊的部分,
但發現頁面不會刷新/images/emoticon/emoticon02.gif

再麻煩各位幫忙看一下是否是規則我有誤解了/images/emoticon/emoticon06.gif

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
小魚
iT邦大師 1 級 ‧ 2019-11-25 13:16:47
最佳解答

所以你是有一個 AccountController ?
裡面有一個 Register 的頁面?
那你有在Debug模式下執行嗎?
轉頁的時候有跑到後端Controller中嗎?

看更多先前的回應...收起先前的回應...
yorklin iT邦新手 5 級 ‧ 2019-11-25 13:37:20 檢舉

是的~我是用 VS 2015 內建的範本先修改,想說直接用內建的驗證機制。
剛剛測試,在 Controller 中 Register 下中斷的話,案網頁網址的當下沒反應,要再按 F5 才會停。

yorklin iT邦新手 5 級 ‧ 2019-11-25 13:42:18 檢舉

兩個頁面的功能都正常,就只是按下連結無法順利執行頁面,我不太確定是 rewrite 的問題還是是 AngularJS 的問題/images/emoticon/emoticon06.gif
無解的話可能就要比較麻煩一點,不能直接透過[Authorize]綁住登入頁面。

小魚 iT邦大師 1 級 ‧ 2019-11-25 14:50:59 檢舉

在 Controller 中 Register 下中斷的話,案網頁網址的當下沒反應,要再按 F5 才會停。

這不就很明顯沒有跑到後端嗎?
如果這不符合你的需求,
那就不能用這種方式了.

另外Angular是屬於前端語言,
如果要在Angular底下執行判斷的話,
乾脆全部都交給Angular,
後端純粹提供API就好了.
(我沒有在用Anthorize的方式,
不過Anthorize應該是屬於後端的,
或許API接收到請求的時候,
先透過Anthorize的機制判斷是否登入,
再決定要傳送什麼資料給前端)

yorklin iT邦新手 5 級 ‧ 2019-11-25 15:46:39 檢舉

這不就很明顯沒有跑到後端嗎?

一語點醒夢中人/images/emoticon/emoticon04.gif

之前的確都是純 Angular 做相關頁面,
因為最近爬文看到 MVC 的驗證好像挺方便,
想說改寫看看XD

我觀念還是得再加強一下/images/emoticon/emoticon41.gif

我要發表回答

立即登入回答