Javascript 在web软件中启用辅助用户帐户
我有一些规范需要做一些工作才能确保它能够实现。我很高兴听到关于以下场景的评论和建议: 我需要一个用户登录的网络软件。所有用户都有一个用户帐户,并且可以有0-3个辅助用户帐户,在进行身份验证时,他们可以通过主网站使用这些帐户。辅助用户帐户由第三方javascript库控制,但我可以控制存储在数据库中的用户名和密码 目标是使用户不必多次进行身份验证,只需使用一个用户帐户,其他帐户应通过脚本自动工作 那么,有没有可行、安全和适当的方法来实现这一点?我知道在脚本中使用用户名和密码本身就是一个安全问题,但如果做不好,我希望能找到下一个最好的方法。我将使用Asp.NETMVC作为平台,所有调用都使用ajax,因此该软件看起来和感觉上都像一个单页应用程序。不过,底层技术并不重要,任何服务器端技术都可以在这里使用 有一些选项可供选择:Javascript 在web软件中启用辅助用户帐户,javascript,jquery,ajax,security,authentication,Javascript,Jquery,Ajax,Security,Authentication,我有一些规范需要做一些工作才能确保它能够实现。我很高兴听到关于以下场景的评论和建议: 我需要一个用户登录的网络软件。所有用户都有一个用户帐户,并且可以有0-3个辅助用户帐户,在进行身份验证时,他们可以通过主网站使用这些帐户。辅助用户帐户由第三方javascript库控制,但我可以控制存储在数据库中的用户名和密码 目标是使用户不必多次进行身份验证,只需使用一个用户帐户,其他帐户应通过脚本自动工作 那么,有没有可行、安全和适当的方法来实现这一点?我知道在脚本中使用用户名和密码本身就是一个安全问题,但
- 基本上,我可以使用任何用户名和密码进行身份验证,只是比较表中的哪些字段的问题
- 我可以强制所有用户帐户的密码相同,这样用户就不必记住/使用许多密码
- 我可以在登录调用中从db中检索辅助用户名,这样网站就可以访问辅助用户名,但显然我不能这样做,因为密码在db中是散列的
函数VerifyUser(名称、传递、记住、容器){
$.ajax({
键入:“POST”,
contentType:'application/json;charset=UTF-8',
url:“帐户/验证用户”,
数据:JSON.stringify({“userid”:name,“password”:pass}),
processData:false,
成功:功能(响应){
if(response.Success){
//如果需要的话,我可以把密码藏在这里。
//它在源代码中不可见,但可以通过jquery访问
$(#secondary pass').val(pass);
//这里我可以显示ajax调用可以返回的html数据,或者
//发送另一个ajax调用以分别检索实际内容。
//此处显示响应对象中ajax调用返回的数据。这可能是主页面等
$(“#主容器”).show();
$(“#maincainer”).html(response.Message);
$(“#logincontainer”).hide();
}
},
错误:函数(a、b、c){
$(“#主容器”).show();
$(“#maincainer”).html(a.responseText);
}
});
返回false;
}
登录
ajax调用可能会返回类似这样的结果
<script type="text/javascript" src="/Scripts/secondarysystem.js"></script>
<script type="text/javascript">
function SecondaryLogin() {
var data = {
'username': 'mysecondaryusername',
'pass': $("#secondarypass").val() //NOTE here I could access the password-stash I set up earlier
};
var system = new SecondarySystem(); //This could be an object from the secondarysystem.js library
system.LogIn(data);
// this could have a onsuccessfullogin callback event, where we could populate some secondary system specific data to the div below
}
</script>
<div id="secondarycontainer">
</div>
函数SecondaryLogin(){
风险值数据={
“用户名”:“mysecondaryusername”,
'pass':$(“#secondarypass”).val()//注意这里我可以访问我之前设置的密码库
};
var system=new SecondarySystem();//这可能是SecondarySystem.js库中的对象
系统登录(数据);
//这可能有一个onSuccessFullLogin回调事件,我们可以在其中向下面的div填充一些辅助系统特定的数据
}
在这个设置中,页面刷新会导致问题,但是我可以禁用f5(或者用重新加载正确的内容来替换它),并且至少添加一个对话框,说“刷新将强制您重新登录,确定要离开此页面吗?”等等。你一直在玩弄的想法,听起来不错,我们很多人都在实践。你提到的一些问题你不想面对,如果你真的想让它成为一个单页应用程序,这里有几点你可以记住 1.刷新F5 如果刷新是您的问题,您可能可以使用localstorage,以便在页面刷新时不会丢失用户名和密码
<script type="text/javascript" src="/Scripts/secondarysystem.js"></script>
<script type="text/javascript">
function SecondaryLogin() {
var data = {
'username': 'mysecondaryusername',
'pass': $("#secondarypass").val() //NOTE here I could access the password-stash I set up earlier
};
var system = new SecondarySystem(); //This could be an object from the secondarysystem.js library
system.LogIn(data);
// this could have a onsuccessfullogin callback event, where we could populate some secondary system specific data to the div below
}
</script>
<div id="secondarycontainer">
</div>