我正在使用表单身份验证。
在根web.config中有......
<authentication mode="Forms">
<forms loginUrl="~/Auth/Login.aspx" timeout="2880" defaultUrl="~/Search.aspx" />
</authentication>
...所以,如果未经身份验证的用户被拒绝访问,请使用子文件夹的web.config中的以下条目...
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
...然后未登录的用户被重定向到Login.aspx页面。
第一个问题
如果未经身份验证的用户请求某些(但不是全部)页面,或者请求来自一个子文件夹(但不是另一个)的文件,我想通过返回HTTP 403而不是将它们重定向(HTTP 302)来拒绝访问页。
我该怎么做?目前未经身份验证的用户总是被重定向到“登录”页面,而不是被拒绝访问。
第二个问题
我也使用'基于角色'的权限,例如我有一个名为Supervisors的角色。
访问某些文件夹仅适用于主管,因此这些文件夹具有类似
的Web配置<system.web>
<authorization>
<allow roles="Supervisor"/>
<deny users="*"/>
</authorization>
</system.web>
如果没有Supervisor角色的经过身份验证的(已登录)用户尝试访问,则他们也会被重定向到“登录”页面(尽管他们已经登录)。
我可以以某种方式更改它(例如,返回HTTP 403,或重定向到其他故障页面)吗?
答案 0 :(得分:0)
您必须通过创建将在Page_Init
上运行的过程手动执行此操作private boolean isValidUser(String userName, String password) {
if(sharedPreferences.getString("userName",null).equals(userName) && sharedPreferences.getString("password",null).equals(password))
return true;
else
return false;
}